Bun strict
Bun-only projects (Bun 1.4.3). A dependency or tool Bun already covers is refused unless the user recorded a G03 exception (gap, Bun version, proof); npm distribution and node:* APIs stay allowed. Same correctness floor as bun-loose.
Set this profile
ccpp cpo profile set bun-strictInside Claude Code, prefix the command with ! to run it in the session. Downloading a profile needs a Builder or Team plan; listing them does not.
Policies
25 policies, grouped by what they guard.
Weakened checks 1
Suppressions, disabled lint or CI steps and relaxed strictness need a reason or the user's approval.
bun-g03-exception-entriesG03 · Every G03 exception records rule, dependency or command, paths, Bun version, gap, proof and recheck condition
Versions & deprecated APIs 1
Code matches the installed version, without removed, renamed or deprecated APIs.
bun-g01-pinned-versionG01/D01/G03 · Tells Claude, at session start, the pinned Bun version and which G03 exceptions need a recheck
Dependencies & toolchain 23
Packages change through the package manager, lockfiles stay consistent and the project's tools are used.
bun-d02-manifest-shell-editsD02 · Dependencies change through bun add/remove: a shell edit of package.json dependencies is undone and refused
bun-d02-package-managerD02 · Installs and scripts go through Bun: npm, pnpm, yarn, npx and node-run project code are refused (publishing stays allowed)
bun-d03-second-lockfileD03 · Only bun.lock is created: no npm, pnpm or yarn lockfile, no bun.lockb next to bun.lock
bun-n01-test-runnerN01 · Bun covers unit and integration tests: Vitest, Jest or Mocha need a user-recorded G03 exception (blocks)
bun-n02-typescript-executionN02 · Bun covers running TypeScript and JSX: tsx, ts-node or Babel loaders need a user-recorded G03 exception (blocks)
bun-n03-bundlerN03 · Bun covers bundling: esbuild, Rollup, Webpack, Vite, Parcel or tsup need a user-recorded G03 exception (blocks)
bun-n04-env-loadingN04 · Bun covers loading .env files: dotenv loaders need a user-recorded G03 exception (blocks)
bun-n05-watch-modeN05 · Bun covers restarting or reloading on change: nodemon or ts-node-dev need a user-recorded G03 exception (blocks)
bun-n06-http-clientN06 · Bun covers HTTP requests: node-fetch, axios or got need a user-recorded G03 exception (blocks)
bun-n07-http-serverN07 · Bun covers HTTP servers and routing: Express, Koa, Fastify or another Node server framework need a user-recorded G03 exception (blocks)
bun-n07-node-http-serverN07 · Bun code serves HTTP with Bun.serve, not node:http/https createServer
bun-n08-websocketN08 · Bun covers WebSocket servers and clients: ws or another WebSocket package need a user-recorded G03 exception (blocks)
bun-n09-file-ioN09 · Bun covers whole-file reads and writes: fs-extra, rimraf, mkdirp or JSON file wrappers need a user-recorded G03 exception (blocks)
bun-n09-whole-file-ioN09 · Bun code reads and writes whole files with Bun.file/Bun.write, not fs.promises readFile/writeFile
bun-n10-child-processN10 · Bun code runs processes with Bun.spawn or Bun Shell, not node:child_process exec/spawn
bun-n10-process-executionN10 · Bun covers running processes and shell commands: execa, cross-spawn, shelljs, zx or cross-env need a user-recorded G03 exception (blocks)
bun-n11-globN11 · Bun covers file globbing and pattern matching: glob, fast-glob, globby or minimatch need a user-recorded G03 exception (blocks)
bun-n12-sql-driverN12 · Bun covers PostgreSQL, MySQL and SQLite access: pg, postgres, mysql2 or SQLite drivers need a user-recorded G03 exception (blocks)
bun-n13-redis-clientN13 · Bun covers Redis access: redis or ioredis need a user-recorded G03 exception (blocks)
bun-n14-password-hashingN14 · Bun covers password hashing: bcrypt or argon2 packages need a user-recorded G03 exception (blocks)
bun-n15-s3-clientN15 · Bun covers S3 object storage: the AWS S3 SDK or MinIO client need a user-recorded G03 exception (blocks)
bun-n16-uuid-v4N16 · UUID v4/v7 come from crypto.randomUUID() and Bun.randomUUIDv7(), not the uuid package (blocks)
bun-t01-typecheck-toolT01 · Type checking runs with bun check (Bun ≥ 1.4.3 pinned); tsc --noEmit needs a G03 exception