{"_id":"cc-safety-net","_rev":"79-535f9f9cc4ebc464b87c83ee9dbb85b2","name":"cc-safety-net","dist-tags":{"latest":"2.6.17"},"versions":{"0.0.1":{"name":"cc-safety-net","version":"0.0.1","_id":"cc-safety-net@0.0.1","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"dist":{"shasum":"d88de80874abb150ec73842d11e7f21bdf6d59a9","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.0.1.tgz","fileCount":2,"integrity":"sha512-FsUtqFGkKQmsZODLZUzg/w4uMp8xWZIoCrJ2NWDAZs7SfBppo0Mspca7zedAv9EouuNcNe6wUK2YqwjxFvTAeQ==","signatures":[{"sig":"MEQCIEy0rcAL8375WW7dTSBJEsAIxgm+LgYUVVg0Pyk/+OXPAiB5b7+NcFf2CR3DuK31eqC0Hd78gz9DCMHfvTOcSiZk6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":455},"type":"module","module":"index.ts","_npmUser":{"name":"kenryu","email":"ken0ryu@gmail.com"},"_npmVersion":"11.6.2","description":"To install dependencies:","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.0.1_1767445497695_0.6056249420605639","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"cc-safety-net","version":"0.4.0","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.4.0","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"2a97575996fea4c2ab64de4cdbfe2b1f31588dc0","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.4.0.tgz","fileCount":30,"integrity":"sha512-pUMN/gnAqvq6nVro1hMlY8oFGXBJLUwM6uXbhsG8xo020r/AGX73+GiZhg90I9AHD4a1q1R0FZrDFLrWxpnrhg==","signatures":[{"sig":"MEYCIQCG45N/CDrhRTU3gV+HgtP953Tc9rB38XKMhxKWpl5qjAIhAJzC/rDQ6n/RfhzGt2Ur5rdVcIk2jMqfnI/iYJS1beR1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167246},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b554f6ad8f110367083ae63e0c76d73fe6d9ed76","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun build src/index.ts src/bin/cc-safety-net.ts --outdir dist --target node && bun run build:types && bun run build:schema","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test","clean":"rm -rf dist","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","typecheck":"tsc --project tsconfig.typecheck.json","build:types":"tsc --emitDeclarationOnly --declaration --noEmit false","setup-hooks":"bun -e 'await Bun.write(\".husky/pre-commit\", \"#!/usr/bin/env sh\\n\\nbun run knip && bun run lint-staged\\n\")' && chmod +x .husky/pre-commit","build:schema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"kenryu","email":"ken0ryu@gmail.com"},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.6.2","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.11.1","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.4.0_1767784515865_0.1000180262079815","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"cc-safety-net","version":"0.4.1","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.4.1","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"591ae1fa41004a24b3d888e7e5eda48dd5bd5e7b","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.4.1.tgz","fileCount":30,"integrity":"sha512-6l4Uc07YEfQjSNO7XQOGCiZog9vWjCQNlea3Yv6e4QAV0nXbMJz+kbBquArL7iKQv7a43MAhs5UCtQNiRdZ6HA==","signatures":[{"sig":"MEQCICwde1+qeKUcEwzN3Os0hZRVamUQTWn3vZDf/oeuHZsZAiBjyPJOElnDwHm2072xvn9QOl3s571IGEgpcCayWLWXrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167407},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d158d8fd41bb70d0ff2011941f4babb533e9d088","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun build src/index.ts src/bin/cc-safety-net.ts --outdir dist --target node && bun run build:types && bun run build:schema","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test","clean":"rm -rf dist","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","typecheck":"tsc --project tsconfig.typecheck.json","build:types":"tsc --emitDeclarationOnly --declaration --noEmit false","setup-hooks":"bun -e 'await Bun.write(\".husky/pre-commit\", \"#!/usr/bin/env sh\\n\\nbun run knip && bun run lint-staged\\n\")' && chmod +x .husky/pre-commit","build:schema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.7.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.12.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.4.1_1767893727031_0.3637673237626111","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"cc-safety-net","version":"0.5.0","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.5.0","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"284f52e3b3238634584002cd6ef03cae1edfd8fb","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.5.0.tgz","fileCount":30,"integrity":"sha512-rf6WSrdQsCj0irkVFFvFYNUXb9B7AaqN7ayrqJCk/GcIiy8c2KrRgkp9Tvkz7n0EMjGGrcSa4Mh3obHQkFhsog==","signatures":[{"sig":"MEQCIBrKqqSFPthhfq67vIC+hxofZxFhdahmK1odrOhw1NRFAiBB2nuqqjTFyXT9dRS+19sF/UugpsTYCv4P7lam31jnPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175071},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"2df2d88a5f044d0d759c80310717453e2a9d9067","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun build src/index.ts src/bin/cc-safety-net.ts --outdir dist --target node && bun run build:types && bun run build:schema","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","typecheck":"tsc --project tsconfig.typecheck.json","build:types":"tsc --emitDeclarationOnly --declaration --noEmit false","setup-hooks":"bun -e 'await Bun.write(\".husky/pre-commit\", \"#!/usr/bin/env sh\\n\\nbun run knip && bun run lint-staged\\n\")' && chmod +x .husky/pre-commit","build:schema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.7.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.12.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.5.0_1768070742928_0.7666290936231195","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"cc-safety-net","version":"0.5.1","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.5.1","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"3076fd74e8a0d21f96d9a18f78c21724260b0e87","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.5.1.tgz","fileCount":35,"integrity":"sha512-cf3S5NqHYrxqeqbKXPEFHoJfzbKeqHNgJVgNjEi4Jqb169JxC2SuPWa9MI1pxgoFrtaBQAfE861d1JoEFbs9iA==","signatures":[{"sig":"MEUCIDYAvfMiLHdgONYayyO0V/Fn/vePPHlsSu1eAW/BVW2/AiEA9sC5nSZIDf/Epi02UmEU1oFIJ149Y6nZLts6f3CAQjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181571},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"a2a5a8c21d74e5531ce94c238cc643205919b316","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun build src/index.ts src/bin/cc-safety-net.ts --outdir dist --target node && bun run build:types && bun run build:schema","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","typecheck":"tsc --project tsconfig.typecheck.json","build:types":"tsc --emitDeclarationOnly --declaration --noEmit false","setup-hooks":"bun -e 'await Bun.write(\".husky/pre-commit\", \"#!/usr/bin/env sh\\n\\nbun run knip && bun run lint-staged\\n\")' && chmod +x .husky/pre-commit","build:schema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.7.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.12.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.5.1_1768154390915_0.6453172219132681","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"cc-safety-net","version":"0.6.0","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.6.0","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"8e4f6a04decbeb6e3f1b5f587a0b84c8b5c12457","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.6.0.tgz","fileCount":41,"integrity":"sha512-Q5NPZI+XGFYux20rDFEyFq7UURXpYJknVGACdXBIVF6lvyJeR2DZbrziZZX49wMCxzoJqA1ck5LUVfRMWDJafw==","signatures":[{"sig":"MEUCIEgXK1Xc9IYiX19cFc8vcgBpLQfBZWxoH/HBgDRMe+dIAiEA8OyprmaHF23YaREjtmUyoN8I+vhUBFC8Tshnkj0jlHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190946},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"272265fbb656f71ed4706593f2d361ecd6702536","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","typecheck":"tsc --project tsconfig.typecheck.json","build:types":"tsc --emitDeclarationOnly --declaration --noEmit false","setup-hooks":"bun -e 'await Bun.write(\".husky/pre-commit\", \"#!/usr/bin/env sh\\n\\nbun run knip && bun run lint-staged\\n\")' && chmod +x .husky/pre-commit","build:schema":"bun run scripts/build-schema.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.7.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.12.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.6.0_1768496744284_0.06897869969878268","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"cc-safety-net","version":"0.6.1","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.6.1","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"6e0a00415d40833d3549ba972142e07e0ff601cb","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.6.1.tgz","fileCount":48,"integrity":"sha512-QFpQ7oVKaUdxpfkKWzpFis70LpXmQX97X1N2jZu8BPgKDxcveX9HHOk0SkQ+aHt8FTdrLChSo3Tzem0fYqbLfw==","signatures":[{"sig":"MEYCIQDwr6Ur20lhRw+THotqz0S29QE/CjGoBEvpKylRixe0uAIhAPg96js1KOiNjOJJZ1BY4WEynOXq1b5zZEeLkha/xtC/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":229745},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"369cc941edfd7bc1b7c78c1948ef27fd6f92531c","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","typecheck":"tsc --project tsconfig.typecheck.json","build:types":"tsc --emitDeclarationOnly --declaration --noEmit false","setup-hooks":"bun -e 'await Bun.write(\".husky/pre-commit\", \"#!/usr/bin/env sh\\n\\nbun run knip && bun run lint-staged\\n\")' && chmod +x .husky/pre-commit","build:schema":"bun run scripts/build-schema.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.7.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.12.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.6.1_1768814726681_0.5718128898457779","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"cc-safety-net","version":"0.6.2","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.6.2","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"774da3ba6e0501969846069d1a34ca02f138126b","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.6.2.tgz","fileCount":48,"integrity":"sha512-lHjPiJJ0+HYl9HjU2Dg/iy2CcR11ijyEHB2ACBBnR+6E05tPhcepQsBUZis7abyzm2u0q/2Qu982iNOAosjczA==","signatures":[{"sig":"MEYCIQCeiZnTYbDAL5juXbiKxcXz3Bd2PBJjYYPd0jJqhxrtfwIhAJMCNbkav5HbPl+sHzjhyoupUofSHREWkcxHkbmzjB41","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":229745},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"772a4b2dd058f0e0d9b0125689979458f491cf81","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","typecheck":"tsc --project tsconfig.typecheck.json","build:types":"tsc --emitDeclarationOnly --declaration --noEmit false","setup-hooks":"bun -e 'await Bun.write(\".husky/pre-commit\", \"#!/usr/bin/env sh\\n\\nbun run knip && bun run lint-staged\\n\")' && chmod +x .husky/pre-commit","build:schema":"bun run scripts/build-schema.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.7.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.12.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.6.2_1768815529966_0.9826782583231624","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"cc-safety-net","version":"0.7.0","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.7.0","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"2cc21e5d06e783f2b3cfb8af561c0e961a287b8a","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.7.0.tgz","fileCount":69,"integrity":"sha512-cu/T7kXAukomqMLmheV/EqYKImOxmoUtC6Oypvrn/qLWr6urHzkIxXx3SZbteLkT3XnHnYMxZTL+9Ry7ZBLNYQ==","signatures":[{"sig":"MEUCIQCtTMhY4fTC3ia7EfjEs9ciQDlTLO59HHZBgtqYU/g1mAIgR12KAGN8uca1jvsu2Kagf50Grzqu2uaOR1Aa4+nalAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":282145},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"562bd80d6d86dc63c081ab38ec2a417c56b837e4","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"bun -e 'await Bun.write(\".husky/pre-commit\", \"#!/usr/bin/env sh\\n\\nbun run knip && bun run lint-staged\\n\")' && chmod +x .husky/pre-commit","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.8.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.13.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.7.0_1769195317892_0.18248502285926738","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"cc-safety-net","version":"0.7.1","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.7.1","maintainers":[{"name":"kenryu","email":"ken0ryu@gmail.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"601a18aba2f2e1188e4121bcd42818b80c707b6f","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.7.1.tgz","fileCount":69,"integrity":"sha512-tOBd9cKeaV4O2sR2tJ3X7xRVun9p3pv2OlyHicLfbMVzeo0cW2PPyOyEv9ph7UpYyizTR2H7v2wQuAMGSf6HPA==","signatures":[{"sig":"MEQCIF0udS+057Pu+9klhWkRt+piFnDPvWSNBpJ2FeAJzGAHAiAaPZWspvb0/W83C1PEzssNv/bAySQGlsYBpZYyuT5qjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284166},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"75df0ec9b072e7d90b3889a396281a15e85cf5e8","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"bun -e 'await Bun.write(\".husky/pre-commit\", \"#!/usr/bin/env sh\\n\\nbun run knip && bun run lint-staged\\n\")' && chmod +x .husky/pre-commit","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.8.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.13.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.7.1_1769353461300_0.17737624086350068","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"cc-safety-net","version":"0.8.0","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.8.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"162473230645e472deaea9af73f1330827a4ab0a","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.8.0.tgz","fileCount":69,"integrity":"sha512-T4CEjuxkVZgfM8BalUFth28QFn31P/zZKXcRTxQuiKroaqA5t8k0KNkEVatXRteU9ohI5LW41rCb5ukzpZfkWA==","signatures":[{"sig":"MEUCIDK5RHMu+0ayGnMlr1QhaTr75DonAu/0EI8azEuaygPuAiEApkC6wmLuNvK7IcOOiQ8an6QYpBHDBziJllkJseY1rSE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":326886},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"6ab61a773af09b42c110c084d5d5532644d82dbc","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.12.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.14.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.8.0_1774068293787_0.5619841223402888","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"cc-safety-net","version":"0.8.1","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.8.1","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"179c6ea86462e9935a4231c14cc6fd20fd5c9e13","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.8.1.tgz","fileCount":69,"integrity":"sha512-uqDQ+2HhapmAsDsvcjlefXISmYEH0zGZ06eWjQvQ5Gze3+h4Elg3D/3lGmZ7V6W1yz8NDfFBBbr1nStvFu4EBg==","signatures":[{"sig":"MEUCIQDYHgLmDfuUxOgW3m7iMDEXS5/n8zgaCDPlQ67LNtFT6AIgRd9956cgjVxAYWk94P3bvbQix7bOEusLU2NDXkNopMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":325291},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e87a8bc857faa6923a9f76f70bc88ddf26e4024a","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.12.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.14.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.8.1_1774365281840_0.992483704785126","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"cc-safety-net","version":"0.8.2","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.8.2","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"afd879df21cf0a65083f77eb373bbcfcc5f8db72","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.8.2.tgz","fileCount":69,"integrity":"sha512-2htLFw4+yPfsVvulZ7F5xQlUebN/wEGDr+/gWuQnBHXvTN4BeFLSvkKmssYFyS0yGaIJv6n5c/beQx9NtqQEpQ==","signatures":[{"sig":"MEYCIQCi3/FyX7brZglDw1Pqe7WZqHl+u059Id3Sqn6A/mJwggIhAIjAO+95JEPQ9eazSx990Cq8eLMxAR1ESeZ2QlMu/0lL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":324280},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"164204d6e1c5599a69f0e724e0c7f7f54aa12a64","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.12.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.14.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.8.2_1774418687357_0.04097187495898025","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"cc-safety-net","version":"0.9.0","keywords":["claude-code","opencode","safety","plugin","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@0.9.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/claude-code-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/claude-code-safety-net/issues"},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"1f3fdec07aaf6beb13f568b62cade987c25f8799","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-0.9.0.tgz","fileCount":71,"integrity":"sha512-MMoIRQeC31qPU8LwXhJ7AxEpJrEbS7b2aotXiuz/G0qvfctzZ4tP1ahqJBO2R0NNoIVB8UrK6VoTzANi+fu0Zg==","signatures":[{"sig":"MEUCIBAh1GhmCQC5xU5hDB7Gn2Sr1cIsFDDPAMmr3No7sU7VAiEA5uXQ5JCoJeVZbeN6QD1nIhHaRPHo7dszadUXt1zOcD8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":421558},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"1819ca2d7527e261fbfaee17237bc54d857a726c","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28db2ca7-f17e-4d43-894b-e6eeff723077"}},"repository":{"url":"git+https://github.com/kenryu42/claude-code-safety-net.git","type":"git"},"_npmVersion":"11.14.0","description":"Claude Code / OpenCode plugin - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.14.1","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_0.9.0_1778120158018_0.5906811251194286","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"cc-safety-net","version":"1.0.0","keywords":["claude-code","opencode","safety","plugin","security","pi-package"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@1.0.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/cc-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"c6d6b0a40fd5a930d2cabe9d8caf261a78b36f90","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-1.0.0.tgz","fileCount":109,"integrity":"sha512-us771lWFdbeDT6h0ecFT5oeVz95t2oHcP4Qaxf5TWYLlmTSKPMOCvIzEWDYxvvd2cQkVAcyml7jy7MRryY4DHA==","signatures":[{"sig":"MEUCIQDeWL2Qp4G0gqAUDtCNq0C+MaSU8sOAh61InKq4AEOcrQIgHHfMHcOR4GVC5u4DkfZ69GAN5gcuDkvCsuJYBdiIpaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":874506},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"1fa1ff80391e9c69f8b31ed4bb063b662e041cf2","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run","check-duplicates":"bunx jscpd src tests --exitCode 1 --reporters ai"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.16.0","description":"A coding agent CLI hook - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.16.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","jscpd":"^4.0.9","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_1.0.0_1780656104813_0.6261843277058345","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"cc-safety-net","version":"1.0.1","keywords":["claude-code","opencode","safety","plugin","security","pi-package"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@1.0.1","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/cc-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"997a87c7f1244404e3944ae0e8eddb46b784e35a","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-1.0.1.tgz","fileCount":109,"integrity":"sha512-Iurq6NghkVhET2SW7UckL6eAoTzKMlSPj/fsyd+dPBQy7zV+HQ25CkEKTY/D2ICLpQW55t+AD5QYY8/54d9xUg==","signatures":[{"sig":"MEYCIQD1ckQsL9qnFJPR7tZxvrl8QDwgZT0BrmSExTX9h/r+BwIhAORDK4/gl6LbPrL9ui5VNVnVcAoX30SP2Nn/EuTAXqUz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":875451},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"1b6d3f45400305e6bc724523c8ccff4314028b33","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run","check-duplicates":"bunx jscpd src tests --exitCode 1 --reporters ai"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.16.0","description":"A coding agent CLI hook - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.16.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","jscpd":"^4.0.9","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_1.0.1_1780673655283_0.6936193103278887","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"cc-safety-net","version":"1.0.2","keywords":["claude-code","opencode","safety","plugin","security","pi-package"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@1.0.2","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/cc-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"595d9293e3fa952294ad95d331ae327cce897518","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-1.0.2.tgz","fileCount":109,"integrity":"sha512-4t+CMNOVb1jSSnXyZsU+McnLJsey6uMGlgMHouddZo6DHvwC1NV9UCCbaRk8aDZhawW6NOyV3cUxs1WPEqFfsQ==","signatures":[{"sig":"MEQCIGHsCwOeu5JSUzZPT8I2hFUsNNem8g+/0blg97sYQHLcAiA+9F1OYj14xFWi/C3My/GhT/t7vRqNUEomCXO/KTYduw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":880396},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fba4ac3575e9bf0689e0562a18988035e64e6ef8","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run","check-duplicates":"bunx jscpd src tests --exitCode 1 --reporters ai"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.17.0","description":"A coding agent CLI hook - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.16.0","dependencies":{"shell-quote":"^1.8.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","jscpd":"^4.0.9","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_1.0.2_1781249030509_0.3040080812007995","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"cc-safety-net","version":"1.0.3","keywords":["claude-code","opencode","safety","plugin","security","pi-package"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@1.0.3","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/cc-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"22cdd65e487bc859553f6255a20bac91dfbde8ca","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-1.0.3.tgz","fileCount":109,"integrity":"sha512-64WWjsQajRU+TZVe06zBEUD0yqEGJLfC0otYexm22WaROGH4/0UcSL7qTcNxLBZlGoYGcsga/WmeLDJma0Kbjw==","signatures":[{"sig":"MEUCIC/5KJEMbEdQAz6EtlUl3D1myehxKlGIzKSy84bzx4bJAiEAvxiN8ryK7Qu4kfeAFVrhsXdQw9MaVH9vTiyE1sGPVHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":883887},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"3473cdb4ac4c52d8d20c60dcc976aafa35878a23","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run","check-duplicates":"bunx jscpd src tests --exitCode 1 --reporters ai"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.17.0","description":"A coding agent CLI hook - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.16.0","dependencies":{"shell-quote":"^1.8.4"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","jscpd":"^4.0.9","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_1.0.3_1781335610734_0.2949514092096297","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"cc-safety-net","version":"1.0.4","keywords":["claude-code","opencode","safety","plugin","security","pi-package"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@1.0.4","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/cc-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"ad1f41b64c2d830f5e3b4c7a7e3f1b57fb46708e","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-1.0.4.tgz","fileCount":109,"integrity":"sha512-FtlGLfxxws+s6Y1FIfiErEM+9/XQvUAyI6avKwnhT4MVStONv6Wekx18cgDQVjgcNwOMRami1GB+Juvpexmckw==","signatures":[{"sig":"MEQCIFyYhCwI61Zw6PhA59deFoXQJZsBgsAffB1CuSh2FsG0AiBRTXA+MFdrbIQ+1qM1Y4hg5O4yT+OfWWVbfZRxrAKsKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":887313},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fe3988a5e9592d2f15322d4c93ab03f17eca2ea0","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run","check-duplicates":"bunx jscpd src tests --exitCode 1 --reporters ai"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.17.0","description":"A coding agent CLI hook - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.16.0","dependencies":{"shell-quote":"^1.8.4"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","jscpd":"^4.0.9","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_1.0.4_1781428678820_0.1490219481779762","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"cc-safety-net","version":"1.0.5","keywords":["claude-code","opencode","safety","plugin","security","pi-package"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@1.0.5","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/cc-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"d8d153c7cc68f4c094971faf847573245d087adb","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-1.0.5.tgz","fileCount":109,"integrity":"sha512-ysa07QD3UgUPFZAEd5qJlTexngNd+2eRtVHF8sQV3opVBtW+/aQdYzTxVopfIOJn3bqoKuL2CUaUmn0SZKal1Q==","signatures":[{"sig":"MEUCIEXN4m7zBNePZwf+O0y8bCwlwC4CUS+jQ9x/5Q/1Zm+sAiEAw8drPAD77yAzJcIEZueNs9KJLIptVh9GAVlOZbk+TnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":887437},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d33edb58939fa6ecdbbe4a61e5a2c292592a16a7","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run","check-duplicates":"bunx jscpd src tests --exitCode 1 --reporters ai"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.17.0","description":"A coding agent CLI hook - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.16.0","dependencies":{"shell-quote":"^1.8.4"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","jscpd":"^4.0.9","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_1.0.5_1781453245356_0.9622185568590398","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"cc-safety-net","version":"1.0.6","keywords":["claude-code","opencode","safety","plugin","security","pi-package"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@1.0.6","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://github.com/kenryu42/cc-safety-net#readme","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"110f6ba9066acb1d2c10637c01f2b56137e2655e","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-1.0.6.tgz","fileCount":109,"integrity":"sha512-uc2EmRXPXb08cfN1eGnr+h3tWHqxA20fJGZoGBgW6wFl+Nubmmy6jug18vc7WrOW7dGBMPxz4VuU8srfjHtWlw==","signatures":[{"sig":"MEUCIDuarIgOa61HQGXKZLhokdZ/TtFlfmOTWa3JqFabk8T8AiEAzzwvV4PWs2LwsMbNlTPhKs/FS4ox4qeJ0bTKfZIZeRA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":889048},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e34ae44a1f341e73729f1be7a62acef27115b109","scripts":{"knip":"knip --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage","clean":"rm -rf dist","lint:ci":"biome ci .","prepare":"husky && bun run setup-hooks","sg:scan":"ast-grep scan","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run sg:scan && AGENT=1 bun test --coverage --coverage-reporter=lcov","typecheck":"tsc --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","setup-hooks":"chmod +x .husky/pre-commit .husky/pre-push","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/bin/cc-safety-net.ts","publish:dry-run":"bun run scripts/publish.ts --dry-run","check-duplicates":"bunx jscpd src tests --exitCode 1 --reporters ai"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.17.0","description":"A coding agent CLI hook - block destructive git and filesystem commands before execution","directories":{},"_nodeVersion":"24.16.0","dependencies":{"shell-quote":"^1.8.4"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","knip":"^5.79.0","husky":"^9.1.7","jscpd":"^4.0.9","@types/bun":"latest","lint-staged":"^16.2.7","@ast-grep/cli":"^0.40.4","@biomejs/biome":"2.3.10","@types/shell-quote":"^1.7.5","@opencode-ai/plugin":"^1.0.224"},"peerDependencies":{"typescript":"^5"},"trustedDependencies":["@ast-grep/cli"],"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_1.0.6_1781542854556_0.08040335063143633","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"cc-safety-net","version":"2.0.0","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"daa92e7f8e0db3943d5b00d84239a0f91f32e75c","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.0.tgz","fileCount":14,"integrity":"sha512-pP6jR7m+uGcTIH4+mEKm3b0Ao6mojDixAPPDXKzoWm61FNffQQwNX69oZa7U3UMabHepGX2Lmzg7TQOCFvAI4A==","signatures":[{"sig":"MEYCIQD26XDIxPIRfcbqs508tYqJguUIibttPmh87UthFTiRDwIhAP8a1lJDPqfDDsrawe0GXvxMGOBSoBqMWjb13LL2VI4J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1633564},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"313c2f4dae87c0ce4c50a1514c1032773a3c4592","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","verify:build":"bun run scripts/verify-deterministic-build.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.0.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-pP6jR7m+uGcTIH4+mEKm3b0Ao6mojDixAPPDXKzoWm61FNffQQwNX69oZa7U3UMabHepGX2Lmzg7TQOCFvAI4A==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.0_1786325013430_0.430117579633313","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"cc-safety-net","version":"2.0.1","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.1","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"621905ee50e7015781adc92ae087aa82d4542e8e","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.1.tgz","fileCount":14,"integrity":"sha512-AQyw1UzxUGwiMkUBN2bLyKcYVCfhkGZF0U9Xoy+nBHvVHRaa3KSmU3JXBEGppXAY1eDVua+jX2lmXXo/r0qsTA==","signatures":[{"sig":"MEUCIQCaRZHlynU2xb262ScYXcsSn/Q1xgkccGGhJ9V0BBIMdAIgWnV9iVUXHm0L75XnIDeozdKYhAPy3t4BtoBL/NGWZQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1634131},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b9d0f7b1344697cdf401752ce642945b9f1a8292","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","verify:build":"bun run scripts/verify-deterministic-build.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.1.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-AQyw1UzxUGwiMkUBN2bLyKcYVCfhkGZF0U9Xoy+nBHvVHRaa3KSmU3JXBEGppXAY1eDVua+jX2lmXXo/r0qsTA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.1_1786343898122_0.7056390574310241","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"cc-safety-net","version":"2.0.3","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.3","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"baa95d6bb9d4142bc9fd5239ed13ccc7e75739df","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.3.tgz","fileCount":14,"integrity":"sha512-d4jxlo+rzKrwTUIOZWAtX4BgRitWFeTKn8MgEYrkyJUEJfN8gBe0o/FluW6WeaJdSbALavYJTTU0CXnJHSSStg==","signatures":[{"sig":"MEYCIQDdmmFFGAhIi+k8pkcpTYtKe3gfKxdAzTq+GYELFRjhHgIhAJOoI7FlBPbi0yATm2+docve4fKPLmzH8QiNFYDV+gZn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1640694},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"2bf7177e063d60cc8f01c220e02ab5cc527e87f0","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","verify:build":"bun run scripts/verify-deterministic-build.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.3.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-d4jxlo+rzKrwTUIOZWAtX4BgRitWFeTKn8MgEYrkyJUEJfN8gBe0o/FluW6WeaJdSbALavYJTTU0CXnJHSSStg==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.3_1786502198631_0.7021404576797101","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"cc-safety-net","version":"2.0.4","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.4","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"50ec7ee1258effee14b6fc1b8c4bb0c0e99e1fdf","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.4.tgz","fileCount":15,"integrity":"sha512-xY3U1qzVS9JlaKykQlNItDd4UV0wCLdnrvCdIDfs19QW5eBxdz1cZ5FGhm0kP0NeOCfeEsrgcRtbsmem+36I1g==","signatures":[{"sig":"MEUCIAIumDlRpLmOQVKp4hoW75IiA099EdEgKv4oR8k1t7Z+AiEAj+eMcXQ8vi0no9sad36uWxD6DqjrjoPs8tWPpFUY/uI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1758864},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.4.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"73275768641a6f8647b085b6dc9fc43504aa5a70","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","verify:build":"bun run scripts/verify-deterministic-build.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.4.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-xY3U1qzVS9JlaKykQlNItDd4UV0wCLdnrvCdIDfs19QW5eBxdz1cZ5FGhm0kP0NeOCfeEsrgcRtbsmem+36I1g==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.4_1786679944462_0.11475511369785596","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"cc-safety-net","version":"2.0.5","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.5","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"655211b5cd414c1ccc5969e5347d183fd184705c","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.5.tgz","fileCount":15,"integrity":"sha512-n62DNh9/9NRGQKLbN8upg7Ox9GISw5xtI/nf4cEYdA3iHDrZJS1UqIuvd8G4PwAn5gE3GptdmE3r1HVDNbkbLQ==","signatures":[{"sig":"MEUCIQCVzcdQyvKfYc1PQb+DKMZ5uRPPXPUtTyY5376e0Jn/PgIgeWM2lVNN8ZsjLZ4QBOazOiytsViAMF42VubBxZyCJ2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1759913},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.5.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"83819e0005e7a22f52cf73afd0c860601b24a3be","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","verify:build":"bun run scripts/verify-deterministic-build.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.5.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-n62DNh9/9NRGQKLbN8upg7Ox9GISw5xtI/nf4cEYdA3iHDrZJS1UqIuvd8G4PwAn5gE3GptdmE3r1HVDNbkbLQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.5_1786724324828_0.6138774114903938","host":"s3://npm-registry-packages-npm-production"}},"2.0.6":{"name":"cc-safety-net","version":"2.0.6","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.6","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"96fe5b11bf19ca3dbb7264757550e4326cd912fe","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.6.tgz","fileCount":15,"integrity":"sha512-MgmnXrectlkg+Y7kMU45Pt0lOLv/T9mbTGNq69y8DEKVojs+lYXkStaJbPdrwIA6Bss96dDCFq/WGqVoDr9lTg==","signatures":[{"sig":"MEQCIF2sEhPtwpjySz8F+ENDmdzRIGW2oIbZHN4EMqmuLd3wAiBWIOcc/xzZHBACohWu0sZ/7yXqccIgR8/TymvDjzGk2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1769688},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.6.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"2583b8d9b9fce4264d0e1aa09b40c62f7632d9d9","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","verify:build":"bun run scripts/verify-deterministic-build.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.6.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-MgmnXrectlkg+Y7kMU45Pt0lOLv/T9mbTGNq69y8DEKVojs+lYXkStaJbPdrwIA6Bss96dDCFq/WGqVoDr9lTg==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.6_1786950442859_0.9530132290733748","host":"s3://npm-registry-packages-npm-production"}},"2.0.7":{"name":"cc-safety-net","version":"2.0.7","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.7","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"7574d56b3e75c788debf6ef0fef988f5f9b9b743","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.7.tgz","fileCount":15,"integrity":"sha512-UpNnHVrOUWz0h1bxtK4G8swlajIP0jaWYqygdYaNPko8ayIwJLG8AfDJfkTPtVJezaFT4Y0JjYkO7anxm6KMKQ==","signatures":[{"sig":"MEYCIQCDX6gR7lOddan8hy0pWdstIliyTx8p8bsI+R3G8Wx/BQIhANlIRugeVq9eEYWJz7FDOM3+7BvVa8Z+vggeI8fe/0L0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1766928},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.7.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"5c5eace87adc0db41ba762018a1cf7d1506e589c","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.7.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-UpNnHVrOUWz0h1bxtK4G8swlajIP0jaWYqygdYaNPko8ayIwJLG8AfDJfkTPtVJezaFT4Y0JjYkO7anxm6KMKQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.7_1787133408990_0.9622865305001285","host":"s3://npm-registry-packages-npm-production"}},"2.0.8":{"name":"cc-safety-net","version":"2.0.8","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.8","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"6519217e3e1f35832bcb8915800d7ba1dac16edb","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.8.tgz","fileCount":15,"integrity":"sha512-18tQ/KiN1X7F7XxVEX3Hy67wWkjCdoxTmzOjYkQz9EnzUwwyCcmjzpmhBBdQSNpj5qCTTWa/IbFgPDFLki9y7w==","signatures":[{"sig":"MEUCIHA8bVux7wi3xvYgckmZxQ55EeVilyUJ4PrGvtsRyvxwAiEA17R4c5Nfy3H4e8tYlp9cNvvE1VXWIa73KuM+b1Q2iVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1767888},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.8.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"299f19c8c0c8f59cc332a2d58c272138fe368e81","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.8.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-18tQ/KiN1X7F7XxVEX3Hy67wWkjCdoxTmzOjYkQz9EnzUwwyCcmjzpmhBBdQSNpj5qCTTWa/IbFgPDFLki9y7w==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.8_1787205077035_0.5088645956281392","host":"s3://npm-registry-packages-npm-production"}},"2.0.9":{"name":"cc-safety-net","version":"2.0.9","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.9","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"7c886ae8a5ae71b981c3bb5520812c17f90b2ba1","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.9.tgz","fileCount":15,"integrity":"sha512-HDjzsMMEvny51ZylEFED6Nuep5Yg6Pn4T7ENWtfYt0up6FsV9WgeSBzPFM3fhoL4FxvxBGhHyzkD4ctvzqn7RA==","signatures":[{"sig":"MEUCICjtrgDN1P8504PdqoMBv6ZeM58OAiNmeW3sFzod7djfAiEA7JtzrTypHGQ3uu/kiRIDquZQcw9erBOYtT9ryL2iFgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1743190},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.9.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"5c1437f15ec7f797073885484a2ee67c89e8cc5f","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.9.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-HDjzsMMEvny51ZylEFED6Nuep5Yg6Pn4T7ENWtfYt0up6FsV9WgeSBzPFM3fhoL4FxvxBGhHyzkD4ctvzqn7RA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.9_1787295380181_0.6276502616185948","host":"s3://npm-registry-packages-npm-production"}},"2.0.10":{"name":"cc-safety-net","version":"2.0.10","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.10","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"8fdea2e848c9a5027d81c49d7e78104889c517c0","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.10.tgz","fileCount":15,"integrity":"sha512-4Zdnax2sGb449P3H9ufJrt0UK4Xwp4DXGPuYYHfyCtUQm+z3HWJQqsNjsGqFeqRRCIthQYqJaMUDTBjfgKwbYQ==","signatures":[{"sig":"MEUCIQDOx6WdwrIk6RR7rLsQOG2UqU3RCfkyXrASpnMj7GJfDgIgDTjHeingQsC11tRfWyjuEcZowEReHJlz/g5qQP+GyBQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1743347},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.10.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"065f660453bcb37ca4ef271c0704673d5ae8915a","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.10.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-4Zdnax2sGb449P3H9ufJrt0UK4Xwp4DXGPuYYHfyCtUQm+z3HWJQqsNjsGqFeqRRCIthQYqJaMUDTBjfgKwbYQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.10_1787301914605_0.6073025028775854","host":"s3://npm-registry-packages-npm-production"}},"2.0.11":{"name":"cc-safety-net","version":"2.0.11","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.0.11","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"9c8c23549c81bda9b5082e7aa2c8ecf2ea026ad1","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.0.11.tgz","fileCount":15,"integrity":"sha512-lpK3cAn7REkzZhLuV/ZvGelFP6uuq6q0qEJTuuUwuCdlmA9N3j3QSQsIip/sK/6yvZswjG9O8pCH4VF9tv54Aw==","signatures":[{"sig":"MEQCICoH78iAX3U/DGobjfOAM4ttuxnQg+msQKUcsTgHRsIMAiBmtygYnbWwwNiqy+l8UrxIPGCxF9ijQmhBInEmfHCXBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1746248},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.0.11.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"be15d0d9d952bac3ea68d9358099ce59cb9e7f00","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.0.11.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-lpK3cAn7REkzZhLuV/ZvGelFP6uuq6q0qEJTuuUwuCdlmA9N3j3QSQsIip/sK/6yvZswjG9O8pCH4VF9tv54Aw==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.0.11_1787499955360_0.8323013256523548","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"cc-safety-net","version":"2.1.0","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.1.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"d1748dc7f261e9ba33268aa5925b08a986e9d6d2","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.1.0.tgz","fileCount":18,"integrity":"sha512-2ly0GfKyI9UE04JZH4EF9O6iTXg9dr+s5nlYPOHTm4M3gRw3eyPVtsr7pOKzEFwK+rcEwIu40kzVTpVHwRnxWA==","signatures":[{"sig":"MEUCIQD3fmzCz6/4u9zql5UDAUhOSJ6+lmt5erjL+5ZXUHiYdwIgVHji/pTkJoar38S4tkQAiq1SdS5/0eCFJY+QBy5pa5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1750099},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.1.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"26d5803abf011ec7f674c27bdc97991bd1e627bf","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.1.0.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-2ly0GfKyI9UE04JZH4EF9O6iTXg9dr+s5nlYPOHTm4M3gRw3eyPVtsr7pOKzEFwK+rcEwIu40kzVTpVHwRnxWA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.1.0_1787555058249_0.9101934847024633","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"cc-safety-net","version":"2.1.1","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.1.1","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"2ee7c6dacd93530ce8623a59ffc7465b22eb282a","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.1.1.tgz","fileCount":18,"integrity":"sha512-jO8xPzLDQaL+n1DT9DmfgyX2Vt6tY1DhjGB8OSi8ZQWXLIxjZhAuqVAescOXEgmsVL/VKSovU404toDxViSB4Q==","signatures":[{"sig":"MEQCIEZVSdYs7ek+sEll3gimRTGmIEhx8WUdEbsN0stNjE0XAiAV0OkC2WolYGEtHiWsomtkWYbVkpoMn7CE5GXKJYl2aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1751054},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.1.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"b29fa191843e4820e6a095eec0cd87361b0b2099","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.1.1.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-jO8xPzLDQaL+n1DT9DmfgyX2Vt6tY1DhjGB8OSi8ZQWXLIxjZhAuqVAescOXEgmsVL/VKSovU404toDxViSB4Q==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.1.1_1787576080039_0.40615264178574373","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"cc-safety-net","version":"2.2.0","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.2.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"4ddea14687f3bf3514f9919b9b30b4dbbdbb8917","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.2.0.tgz","fileCount":18,"integrity":"sha512-+1QnKZ4VnSWq/QzehrMYa37oUp3BMlzPFQff6FUKIbvReq6BgPFQTsRnPugddzrZcD5T8ttYroIu10feuYm99A==","signatures":[{"sig":"MEUCIHrg4SwMYcOtYlRSgEHTLNHFWEvqsWHjLHLu+SqoZcLPAiEA4Q7XPfBGvyLL2uIYOivocItQNSyFE8bv+RG9PrJNLio=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1759042},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"8e3bd08ecfd751e36162f300f3f3cb87efd4c6d2","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.2.0.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-+1QnKZ4VnSWq/QzehrMYa37oUp3BMlzPFQff6FUKIbvReq6BgPFQTsRnPugddzrZcD5T8ttYroIu10feuYm99A==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.2.0_1787635982041_0.39854038707686645","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"cc-safety-net","version":"2.2.1","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.2.1","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"77c70a234f6776ba086d216452d01b0aee836f2e","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.2.1.tgz","fileCount":18,"integrity":"sha512-bh+pJnxB6PrTfh+jfDIYIIajTDVey7KcFiAbaWN5Y4Bzrj8M9F6ulFlINI9pi8j2/glU/rRuiZ9J5ICItInjDQ==","signatures":[{"sig":"MEUCIQCoiAIEeV6fYQ6hvavZF2EOOOz+ATuiwJdU4YNQPd1ZjQIgCkB+wnPUCcCsOUPnBfTeQTUNgNvlkXhSDAW/aY9+uIc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1759414},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.2.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"54e33f6d6f4257b10392d799250271958d8d3c8b","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.2.1.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-bh+pJnxB6PrTfh+jfDIYIIajTDVey7KcFiAbaWN5Y4Bzrj8M9F6ulFlINI9pi8j2/glU/rRuiZ9J5ICItInjDQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.2.1_1787660874270_0.19339329825488583","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"cc-safety-net","version":"2.2.2","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.2.2","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"1bfbdb7e96e0faca8a743a05b00aacdcdc903c03","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.2.2.tgz","fileCount":18,"integrity":"sha512-aZ893BibTAz9wUqt5XrqdA7hY/XlOd5Jdd/0hjmha7MviDg/fIcAgzod9NkuyMuUDMyW85YPyUp9soK7ofE74g==","signatures":[{"sig":"MEUCIGoZaQcZpfDV1OTqC4Ly+HsJe/WnU31tBQv7dwisO9EuAiEAkpuyzHLFmaIAdRe+6od9r7VTS6ZYUjCbFXm5jZeheKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1756524},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.2.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"1bc02194c293b72c06a6530fe7129704b5b2051d","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.2.2.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-aZ893BibTAz9wUqt5XrqdA7hY/XlOd5Jdd/0hjmha7MviDg/fIcAgzod9NkuyMuUDMyW85YPyUp9soK7ofE74g==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.2.2_1787672119078_0.8622236012566178","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"cc-safety-net","version":"2.3.0","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.3.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"6e4ce4597799f23fcd374e744cbe39281b035f9e","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.3.0.tgz","fileCount":18,"integrity":"sha512-RTrufAlyCpwxalesC9fV8Cy7GsDFKHz+gre158viXC49Aqexu4Tuqv4F01UUsmpLyG32lgvMD9k5tG3C0/FKKA==","signatures":[{"sig":"MEQCIB0Qb6EJ3Tu6C974n2IuXkMLWgAWDjvMW3jqZZFAzeqBAiBN6s9w5UAUDuCLq1nPYC1d5X38s5ZboNYAbzbpYoLpFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1824786},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"5837fd3f459b021a7ba92bee3b60c369efb04612","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.3.0.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-RTrufAlyCpwxalesC9fV8Cy7GsDFKHz+gre158viXC49Aqexu4Tuqv4F01UUsmpLyG32lgvMD9k5tG3C0/FKKA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.3.0_1788155264120_0.04977391346099047","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"cc-safety-net","version":"2.3.1","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.3.1","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"3bd348c8be790a8df5cc9e67167cf277e37b4be8","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.3.1.tgz","fileCount":18,"integrity":"sha512-APDo+ntOURSqRVFcb26HDyq7aEIpl9sBiFhXSd6iyoNp167p18S4xFS3FlbHbIK77jijFEuUhpgxa/3paSuGdQ==","signatures":[{"sig":"MEUCIBNemO1qFG5pdPjaA6HA2xb0xmJ2h3zWS4pIfaATuSwmAiEA/wKT2RVgukM91BzDrph5BIpn54JquCsIPzc85S+TROg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1829250},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.3.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"3e171d6a27838fe5b8e1d21ac8eeea16c68c2790","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.3.1.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-APDo+ntOURSqRVFcb26HDyq7aEIpl9sBiFhXSd6iyoNp167p18S4xFS3FlbHbIK77jijFEuUhpgxa/3paSuGdQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.3.1_1788260721373_0.24841763402176986","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"cc-safety-net","version":"2.3.2","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.3.2","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"15e0658d12b283ba9c4cc3894b7a98557030f9ff","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.3.2.tgz","fileCount":18,"integrity":"sha512-VY9TxnXlapKMlDDUz4udRu8AUHb/llDtAzlhym9YbUiiifyyXI92nLbzkI9hXuAHd3K39N6NkSJQ7bnSPp1X3A==","signatures":[{"sig":"MEUCIQCP/GMnHwKnnsZhm+RVoFXjrGqTSqjEsl4GmlAFk0joFwIgHyJVd9zCNP1Cuv6MSADqeL7Pq4Q2knv7FpHomykntb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1829754},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.3.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"775de25611e01205acf579b00a4d34f53b2908be","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.3.2.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-VY9TxnXlapKMlDDUz4udRu8AUHb/llDtAzlhym9YbUiiifyyXI92nLbzkI9hXuAHd3K39N6NkSJQ7bnSPp1X3A==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.3.2_1788448978367_0.20337437163198913","host":"s3://npm-registry-packages-npm-production"}},"2.3.3":{"name":"cc-safety-net","version":"2.3.3","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.3.3","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"abd1ebfd6e4a19dd8041558afaad0fedf023afe8","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.3.3.tgz","fileCount":18,"integrity":"sha512-Bmqfd1nqsB0sj5Dof0LG/FZufG6QGs5A7yF1mf2BhTOGhbtBcMIrJo3k9qRzU3NDvfzlvBOe66L8BkU7p47moQ==","signatures":[{"sig":"MEUCIQCX5YK+k1oajUqj0PkNDnKJmSLi782R7sE1z7Eb0W/lYQIgHgtlKUk80qwJpTC7dNCcdpEE+O7jD5z/5jD2mrgQLeI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1831205},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.3.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"329a2fa04408064a5a8776db525c624a03616ff6","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun run scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.3.3.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-Bmqfd1nqsB0sj5Dof0LG/FZufG6QGs5A7yF1mf2BhTOGhbtBcMIrJo3k9qRzU3NDvfzlvBOe66L8BkU7p47moQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.3.3_1788542444422_0.5188023675976687","host":"s3://npm-registry-packages-npm-production"}},"2.3.4":{"name":"cc-safety-net","version":"2.3.4","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.3.4","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"e4e5221523054075658d338d844dd50ac43f5463","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.3.4.tgz","fileCount":18,"integrity":"sha512-VqJy9NZXXuDepM7WPC88g3/H/W4AM1secWuOAruPxJC5OtE3afsddbB69/n39bb+Qem1BdLfT131uErV4mtTow==","signatures":[{"sig":"MEUCIHod3ElgmsdUoM8xRFMAutLRc+rvtXq6URlv2OD7R1e+AiEA039DV+mftUQ0ddcdXv77ef47Pa1Bi0zZQRcFQKTW410=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1846500},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.3.4.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"e34ca61f448664c5fe056dd0c0cc15264a8712d6","scripts":{"knip":"knip-bun --production","lint":"biome check --write","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:schema":"bun run scripts/build-schema.ts","cc-safety-net":"bun run src/cli/cc-safety-net.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.3.4.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-VqJy9NZXXuDepM7WPC88g3/H/W4AM1secWuOAruPxJC5OtE3afsddbB69/n39bb+Qem1BdLfT131uErV4mtTow==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"4.3.5"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.3.4_1788834153318_0.6691285959378683","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"cc-safety-net","version":"2.4.0","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"00ee87675bb10604469e04c822390ad4c3a0ceec","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.0.tgz","fileCount":19,"integrity":"sha512-oOUHvzPqwTtuYfg2HdgVLJLaYfOnIhclSS0LrOlp/7wgvPMTcEZ0cmpWy20NWPiI6bhAPEX4TgiiAvnthvH4Nw==","signatures":[{"sig":"MEUCIQCCjdH7Jiu/tI3EjlXeXwJrorbp7nlHpkILGy0cBCA12gIgQaqP+0J1h+FA8+RTrj5AIBoFTy3yLFqKy05XhK7GslM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDcVfzg6v4GduoD8rIQBeA8mgR7cl06yb62XGJNkc/mNAiAF9X5sO/T//bC1rBOaXg6a6kic6rJui9vm3tS9wrkpeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1842312},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"7622a12456f8332648164207235cd9d0df37a15c","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"biome check --write --error-on-warnings","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci --error-on-warnings .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg' --ignore 'src/gui/frontend/**' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.0.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-oOUHvzPqwTtuYfg2HdgVLJLaYfOnIhclSS0LrOlp/7wgvPMTcEZ0cmpWy20NWPiI6bhAPEX4TgiiAvnthvH4Nw==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.0_1789359866820_0.3499402227650261","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"cc-safety-net","version":"2.4.1","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.1","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"d7d40103631ff62228394d634951c84cd7aea034","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.1.tgz","fileCount":19,"integrity":"sha512-kZMPptnLcW8rhKviZDhKaLjA1PJ9zDkA1bpRQMFm2oyJ52A19IjJsB1DtNnrqwEbdh5sIpUrzczYd+DhEyk9RA==","signatures":[{"sig":"MEUCIQDT57uTV3Bbkp0TJ4aHPQqEx7NctQbJLzR77+NRbTyo9AIgP4GXkS2z1qXYhDJ4DC/Moyw513pppMkD/S/2oDk/Ri8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEYmNJKgv04eSr/HDRdy5FqjeLtZO5FlzvJ6z9akEz+MAiEA40navCwGu6r8PjNyCXje7UMTc5rCi4jgw824vYdxw+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1842372},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"879ed64316014198ccbe54b9a9152432f596f969","scripts":{"ccsn":"bun run src/entries/bin.ts","eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"biome check --write --error-on-warnings","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci --error-on-warnings .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","test:e2e":"bun test tests/e2e","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg' --ignore 'src/gui/frontend/**' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.1.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-kZMPptnLcW8rhKviZDhKaLjA1PJ9zDkA1bpRQMFm2oyJ52A19IjJsB1DtNnrqwEbdh5sIpUrzczYd+DhEyk9RA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.1_1789363897929_0.741874536148619","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"cc-safety-net","version":"2.4.2","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.2","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"dda315ba4476e1103e18e93e4b0c22efcd50035a","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.2.tgz","fileCount":19,"integrity":"sha512-TpwntOBTnD4UZa36kDhTOQoGldznWEHuZEeLvSpl0D6d9J8v6VbERuXzlDZQa33GXM7o/rxd4cNFNPLtUfINhg==","signatures":[{"sig":"MEUCIBlFZk3iJz7JGdREQJGERiYiiQ6odSg55kq294dHQ3QvAiEAnaIM9l8LUrILiX7j5Ao4F2NcDSRIWwjYExzs1tXREpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDODpq0phEpaCJBv2VadQNq6H5dnAsh5lbuZuyjSGRJbQIgdeYM1dK82cBCG0iYN0LESQnfwBOO/JLgXBu6b+h0fU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1793244},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./package.json":"./package.json"},"gitHead":"de195b0e91f24b2c06554f719d4089d725b22809","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"biome check --write --error-on-warnings","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci --error-on-warnings .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg' --ignore 'src/gui/frontend/**' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.2.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5"},"_integrity":"sha512-TpwntOBTnD4UZa36kDhTOQoGldznWEHuZEeLvSpl0D6d9J8v6VbERuXzlDZQa33GXM7o/rxd4cNFNPLtUfINhg==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode-ai/plugin":"^1.18.3"},"peerDependencies":{"@opencode-ai/plugin":"^1.18.3"},"peerDependenciesMeta":{"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.2_1789622716900_0.29211026026761444","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"cc-safety-net","version":"2.4.3","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.3","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"07e451245143ab03d6337d23ff41aeb8fba35f40","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.3.tgz","fileCount":20,"integrity":"sha512-LcnnJQcKwzxZdVMXmvCZdrNHscye2b8SHF6y41qOqVuukOtI7BpVgTvkyZoEbGIQAST1/tPVwKv0lJcvsHY0sA==","signatures":[{"sig":"MEYCIQCZ8R6xLRtNE1XoruLk18URqUnlkNJosVGfJvG3hyczywIhAPM8FcczBJVkKguJoXxnkpshufLfL/4tN06GRQCAG6uP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBryy2gNKp+RXP+iKmJHHGwA0uHB9SKuVQTf9BdvRj1NAiEAiCS/2Jk9ubp+Tao+plruRo1w+6FahcX0cXnwaSqvCyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1875055},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"49be587b269b435362c68aeb5ba90c3b0334b3d0","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"biome check --write --error-on-warnings","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci --error-on-warnings .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg' --ignore 'src/gui/frontend/**' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.3.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-LcnnJQcKwzxZdVMXmvCZdrNHscye2b8SHF6y41qOqVuukOtI7BpVgTvkyZoEbGIQAST1/tPVwKv0lJcvsHY0sA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","effect":"4.0.0-rc.112","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.3_1789673878287_0.4992435474272725","host":"s3://npm-registry-packages-npm-production"}},"2.4.4":{"name":"cc-safety-net","version":"2.4.4","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.4","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"543fc7867eb4c3e71d6deac734ff0a8641087cc3","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.4.tgz","fileCount":20,"integrity":"sha512-L2lI9xePBtshUMNztjNPGH71RDrlVVATud7FH0xnu/Qcgfoi3xteh01Fq2gBZjF8sQKiSvZS38qMp7vetGu2aA==","signatures":[{"sig":"MEUCICVMEWpTGlJkwIcXo7u+87D4NAQiiGxMpBO/dL6mfEU6AiEAqnvosY3HyqBj+ubL1VqkfkSYZS/pccD5btrmZKxhNAI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDddXUiBOpFFNjUNtJwDFIG0ZcE9HYr8mAqb9hO/gjmLQIgJqDclVfX9k/Qp+gIKSpXMapHT85XHbGgMhwIMB1+kd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1891354},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.4.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"27cd85b2c799b3f4d232d954a64582179b0dd445","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"biome check --write --error-on-warnings","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci --error-on-warnings .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg' --ignore 'src/gui/frontend/**' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.4.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-L2lI9xePBtshUMNztjNPGH71RDrlVVATud7FH0xnu/Qcgfoi3xteh01Fq2gBZjF8sQKiSvZS38qMp7vetGu2aA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","effect":"4.0.0-rc.112","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.4_1789897453097_0.6208596840967806","host":"s3://npm-registry-packages-npm-production"}},"2.4.5":{"name":"cc-safety-net","version":"2.4.5","keywords":["claude-code","opencode","safety","plugin","security","pi-package","cursor","amp","grok","grok-build"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.5","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"5a234c32a62b8d95618973df5c46661c317ea567","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.5.tgz","fileCount":20,"integrity":"sha512-NxVJYOyXsqI6+xX18nk5AiHilhgIR3thwBgDzXeEHuxKPrUhutD40tOGX3kgYDyqBwHPASyn7UOm05pAzhTsPw==","signatures":[{"sig":"MEQCIERmpEPBFU38fizd9LvyrJeyLRV6NrWtRlafpCuVjN9wAiA8fv2LLsqmTNgs5MAP9tVf6tsmp7Y5pNCuKuqXeBM4CA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGR2qOpXijEjis88DHR4XH5/MD1Sz5m44G1oqpyV8LcCAiEAlX68H6axZ0CvQJugpzI0aX60mTQeOYnwNtyUg7OpUhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1893862},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.5.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"17c99099889ed8278d44e4d49d64459e49385170","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"biome check --write --error-on-warnings","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","lint:ci":"biome ci --error-on-warnings .","check:ci":"bun run lint:ci && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"bunx jscpd src tests --no-tips --exit-code 1 --reporters ai --ignore '**/*.svg' --ignore 'src/gui/frontend/**' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.5.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-NxVJYOyXsqI6+xX18nk5AiHilhgIR3thwBgDzXeEHuxKPrUhutD40tOGX3kgYDyqBwHPASyn7UOm05pAzhTsPw==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","effect":"4.0.0-rc.112","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@biomejs/biome":"2.3.10","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.5_1789988647793_0.6845055064382535","host":"s3://npm-registry-packages-npm-production"}},"2.4.6":{"name":"cc-safety-net","version":"2.4.6","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.6","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"beeb108f4d6f5667dbc6f1c01c4cf521cf4924eb","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.6.tgz","fileCount":20,"integrity":"sha512-v6urIjvsoeKmVQsa02XIyfUYywTNPbfe9oKMmorkB9bt6hp0HbBhALQs7hfwNvwuIHHDhxzVHDrfNlIBwgIZDQ==","signatures":[{"sig":"MEUCIQC42ogQkdNhXDSeUarvcQ4BpF5fvNEszrJeYTK5K5dqdgIgNJ6+CL6tBKrOMNgc7rBaPzb1yUgXVLW5sV0uw3BYRB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFXUmXu9FNpSqZoOsO/6wW217FrHmLGGLmfzGNzqsqgtAiAveZRVlfSGZQsvzbSYAPOxylTF/tfEN+GGvXOucETToA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1910077},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.6.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"3a3d2414610195c00f4807b05ecc63ed2c3b497b","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.6.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-v6urIjvsoeKmVQsa02XIyfUYywTNPbfe9oKMmorkB9bt6hp0HbBhALQs7hfwNvwuIHHDhxzVHDrfNlIBwgIZDQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.6_1790175920449_0.18529403858255833","host":"s3://npm-registry-packages-npm-production"}},"2.4.7":{"name":"cc-safety-net","version":"2.4.7","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.7","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"36b7bb9aa8a928e61b1b059135abdbc4aa579c56","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.7.tgz","fileCount":20,"integrity":"sha512-4pBLXMdKFobnDWOsjrG2PleGYgzz/ygKOBLpD/Dw7HWcdQrBrDhInY4b3hreiTlSPiM0SP1U/UmCyDbfl3yKEQ==","signatures":[{"sig":"MEUCIC4QwBavJrlaRxcdDZY2nwcfFRWDd9dPlI91hjmqDx01AiEAp3yQmI7x4s+3V8JEgbi6p+559TqWN+ix/Kow4zzzczI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIESaOkTl/I5W9lYakg64bmFIUBvDKTvCovO6uvZEKwIdAiEAv8tCBtiahyju4Ca4oDE/AXQ7jmsE5JdQc6wsPFYKI+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1912346},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.7.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"5c721ac964f88220b5ecb0290277fa57b5ea3ca1","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.7.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-4pBLXMdKFobnDWOsjrG2PleGYgzz/ygKOBLpD/Dw7HWcdQrBrDhInY4b3hreiTlSPiM0SP1U/UmCyDbfl3yKEQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.7_1790338769535_0.24193322292909714","host":"s3://npm-registry-packages-npm-production"}},"2.4.8":{"name":"cc-safety-net","version":"2.4.8","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.8","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"7bfd56c725ad3ee6dc85b24ab69b6fe926d95944","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.8.tgz","fileCount":20,"integrity":"sha512-1g2gWV1SrYmcmxFh2MCyklfzPBZOqMORyTpAmTlaLEL2wZQ70BZyb9CtwUgSb7PfgDCrZGyqa5C7HwqjmZwDww==","signatures":[{"sig":"MEQCIF08NR3mtzMMdC38PzmWmSwfgDU5tOwM940JYDUzrBzGAiBXCl3/p+ehXxpfdtc82j51zoNdvjHHyDSsxJG5lfyvTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBtrrow8tiAiOzjAE2k6HKSO0BUqbiVWbWnBxMZXvh00AiEAmhDVQrChFrMwgpQMgUYffQZl/oJTovPtYfBomMcGs0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1911823},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.8.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"268ed09a50cf72c99c0de9dccd39d2b58ab9504c","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.8.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-1g2gWV1SrYmcmxFh2MCyklfzPBZOqMORyTpAmTlaLEL2wZQ70BZyb9CtwUgSb7PfgDCrZGyqa5C7HwqjmZwDww==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.8_1790407673490_0.9136272969385792","host":"s3://npm-registry-packages-npm-production"}},"2.4.9":{"name":"cc-safety-net","version":"2.4.9","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.9","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"9b5090c8b7811a9001c86d0c8520bcce1b3dd007","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.9.tgz","fileCount":20,"integrity":"sha512-5N30U5w+zqZ6I8zrHadiMTiWYczNKV6ckOuvBTM+FG7AsTJhLks1eoH7adQTF4yCexuVJNpvOwZFlrUcntkPMg==","signatures":[{"sig":"MEQCIGVnjOpsa+NjGlo2waz+/EWBEoky6aGSMsBM8DLwEifFAiA8lLO18RjeeQRVf+N3HEF7Uy3t/309lvLT87eJ2/akMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCoFreN/NrAg7vTWZ16yf7HP3qzYu8jZQgqWKSJFZXOZgIgHrOhS5NwRCQ6uzp27J1Jpg8Q6FvKqGdt/KDMMeeWdwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1912012},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.9.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"784064977b8ab01bf8b2a3f057c4ad574c0c7c1f","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.9.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-5N30U5w+zqZ6I8zrHadiMTiWYczNKV6ckOuvBTM+FG7AsTJhLks1eoH7adQTF4yCexuVJNpvOwZFlrUcntkPMg==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.9_1790416151056_0.3563478032177205","host":"s3://npm-registry-packages-npm-production"}},"2.4.10":{"name":"cc-safety-net","version":"2.4.10","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.10","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"87580ef357f11f0913032b52b1cca9d84df21017","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.10.tgz","fileCount":20,"integrity":"sha512-CvYPQGElBRT2+JT77+DcGDUZpSjQW7y/Wnk/mOmGXfOzZVTQw9GRnOLqIVWapTt5pPLhnGmaKg4ykXZ0+xWIFA==","signatures":[{"sig":"MEUCICe8B9MxxTLMsX9tKn8RAbGTJkOrx5EZO8MmfHjBfaq4AiEA8RHxaAHH/bOGhVNNtiY8pyDxWqMSp9FUnPGsVKOoq68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDTgVgVB3KUPUS+N0WVyh+6xdhz24mtihbMcjFzk2DQjQIgX8WVUbC2/Jww4wJ7AqPamWYbW6AQAQroiIOUfA7FGGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1911988},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.10.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"223691cfeefcedb181a4865d8e734a025b6aef06","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.10.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-CvYPQGElBRT2+JT77+DcGDUZpSjQW7y/Wnk/mOmGXfOzZVTQw9GRnOLqIVWapTt5pPLhnGmaKg4ykXZ0+xWIFA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.10_1790418609344_0.0041713311943532005","host":"s3://npm-registry-packages-npm-production"}},"2.4.11":{"name":"cc-safety-net","version":"2.4.11","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.11","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"f028cce1e657c85c7f239fe868c3883b525a78d4","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.11.tgz","fileCount":20,"integrity":"sha512-PXe3lFGBowli7cjXsmh5sHQOzKVFv7UTT2B8iupIk0RhwQymJl5NS5kRIwh78LOXh6ONz69wcEGVLIAPpuAfOQ==","signatures":[{"sig":"MEQCIBu1R5oKftapbVDFLp9/sGX/eCxc9JJwUPfgE+1FHmLhAiAvaj2RMztVKDHD0JMFF8Xzs21JbTsp6Lcbr6QLO03/Qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH9CyXxuvXLnAy7YqpDRVd8Cuzr9vYYv8Cz7qE/D2hU7AiBqYPw9y0g+C8GDx0SBSh0mVtYqb0jfHWD8YGzlcMgfiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1921473},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.11.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"bbade36ac6314a1bce762aa94948a6dc1a35e8ae","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.11.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-PXe3lFGBowli7cjXsmh5sHQOzKVFv7UTT2B8iupIk0RhwQymJl5NS5kRIwh78LOXh6ONz69wcEGVLIAPpuAfOQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.11_1790437873736_0.06827726886281638","host":"s3://npm-registry-packages-npm-production"}},"2.4.12":{"name":"cc-safety-net","version":"2.4.12","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.12","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"e29f3874b531e6a3bb3eeba6d5e8c08e1a6c991a","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.12.tgz","fileCount":20,"integrity":"sha512-rhbMvgrJ0HOx+1zTdZbg8B4TMeqTOQqrOZBd4EcaK4szCjdhlqzQPCHNCNqaXc+5qlFURVkMzbBtnYCgosUtgg==","signatures":[{"sig":"MEUCIHJieAyu7tYOR9VVQV9mHWKvm138pr1FvnP4f2sLSHgXAiEA4fHrl/tvgRBWxnTQYeaXKFz1fmFZ+E40d346efMvDuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCBfi7tAsldAqP6Kg3lfGUZzZUygHT8tGWZFD2inN9njwIhAO11y02dlnoxqCwP3gIgXOl05heOuzlNtxyPwPrpyMka","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1942678},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.12.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"40c795de877a32335e544835c37755f7e31e80e3","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.12.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-rhbMvgrJ0HOx+1zTdZbg8B4TMeqTOQqrOZBd4EcaK4szCjdhlqzQPCHNCNqaXc+5qlFURVkMzbBtnYCgosUtgg==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.12_1790663613953_0.8267801550445157","host":"s3://npm-registry-packages-npm-production"}},"2.4.13":{"name":"cc-safety-net","version":"2.4.13","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.13","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"81ef50188cacedde6df06303f6f25b574eec359d","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.13.tgz","fileCount":20,"integrity":"sha512-aSZSakiTLK1YrrtkQfvAyW12ZGHVS7lryswgKzkqynnW/1G45RMxi4v2qdg6teb5sf1F0/qDzipzf0I1l2Rpsw==","signatures":[{"sig":"MEQCIE2oYV6bopD5+pvOuvd5nbV8wC7rBThDACmhBmTY7ucyAiAMQ2dMxfXOIPi9HbStEHaqERtWIdl/aHQ6JVX2UC6LkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCEbpSQSvnibNEANrum62jxV/miog/+5SVLPw2JbYkaSwIhAKVGs6tp+MLcNvPG9lafXY/o08XG6mMUKqm7cBG8qlr6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1948069},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.13.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"d31cf9c598fd230d29ea924df0e15b50e960be82","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.13.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-aSZSakiTLK1YrrtkQfvAyW12ZGHVS7lryswgKzkqynnW/1G45RMxi4v2qdg6teb5sf1F0/qDzipzf0I1l2Rpsw==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.13_1790699581207_0.7151754168034234","host":"s3://npm-registry-packages-npm-production"}},"2.4.14":{"name":"cc-safety-net","version":"2.4.14","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.14","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"4429e3cc15b56496320c00a8ad4362ba4bcf6c6b","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.14.tgz","fileCount":20,"integrity":"sha512-isLHX/I33aGiJElPiXjO1PFgmPc8SmHuh85MS4PxuwHzYD9vv8cLG5QreseYvjpdnw/zfQ6CGoHf4o/yEVM1eA==","signatures":[{"sig":"MEUCIQCF53hgyVU0lNfBsAy0l8dYaBguAPpIA4InHVjxnmcsWAIgbQ43qkCKcEWFAWgKZOCFJIXs6INYGNRyjvMHzsC/cLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICmBARFyrC0BlqQhk7W5iq3nydcSsS7knFm6fb8grpr3AiEAsk/rKsi83KRLrXyJAOdT5lp4J9AD6nZTftUdDM9gHXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1948212},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.14.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f9bfeca0ecf361ac3240e10bbb36dca68fe17a38","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.14.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-isLHX/I33aGiJElPiXjO1PFgmPc8SmHuh85MS4PxuwHzYD9vv8cLG5QreseYvjpdnw/zfQ6CGoHf4o/yEVM1eA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.14_1790732710427_0.4054607696653614","host":"s3://npm-registry-packages-npm-production"}},"2.4.15":{"name":"cc-safety-net","version":"2.4.15","keywords":["amp","claude-code","cursor","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.4.15","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dist":{"shasum":"cc8e4f097d0dc491228de425d24cf9a7e69fe9ae","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.4.15.tgz","fileCount":20,"integrity":"sha512-itFlS0v5l9IOEp6W2Ia1C/5wASei24gbbvfnjcYCeSaEeJ0uOFqc0ECwFzs8xMHjWE7+Im7osWjIn7uwXyDXvw==","signatures":[{"sig":"MEUCIGoVnILnF0gX4tkEHAhWb1hlktfDn32ZcnTykVyYZd+KAiEAnWqmWfNvcmAWDNB5bPnmu5SRDrRPPx5UwPExJ5C0KdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBkYDBo5AOifmpw1DD8TVAcrpUoiPx5mlltBAJ0DSBaDAiA8UIVqoi9vwWRORWf9kJxkPn8oJ5xHZk038FaxBIwjuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.4.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1955619},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.4.15.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8459b51d72d96c56ca60b3fdb3ae5b19eb5603ed","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.4.15.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-itFlS0v5l9IOEp6W2Ia1C/5wASei24gbbvfnjcYCeSaEeJ0uOFqc0ECwFzs8xMHjWE7+Im7osWjIn7uwXyDXvw==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.4.15_1790846920723_0.30454534572479797","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"cc-safety-net","version":"2.5.0","keywords":["amp","claude-code","cursor","deepseek-harness","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.5.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"356d5d6c77eb05a5b8c94158962c07e0b19bd311","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.5.0.tgz","fileCount":23,"integrity":"sha512-9nBySBufsyeU8edpW6fAzHaO7T3nfwOao+nq2b3b/TdTgtX4wSzRoQMqEX2g9EV5Bbqf5TFzZQ64of56COq4hw==","signatures":[{"sig":"MEUCIQDRmhY8wdRKqy8X3QF7OGXG33Q2eJcqwx0znVnlKy4IUgIgTuKGRMr1QVDs8iAshPzwnJkrkGVtvMNj2HJpT+DTNic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCBFZpjsXjTEOd01T0asb83lTrbUKHrp8qJt6BDw0YhmwIgbz1oTyaoouP+gZWwL5C/fUUhvBkHXX/vADX+AA/EY30=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1918530},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.5.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f9b1fa860cbb5c678555b6126a6ef15f1bce01ff","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.5.0.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-9nBySBufsyeU8edpW6fAzHaO7T3nfwOao+nq2b3b/TdTgtX4wSzRoQMqEX2g9EV5Bbqf5TFzZQ64of56COq4hw==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.5.0_1790877088008_0.4087095630489166","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"cc-safety-net","version":"2.5.1","keywords":["amp","claude-code","cursor","deepseek-harness","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.5.1","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"1ff54ff6f45578098dbc899af6ee2d5c78736a1a","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.5.1.tgz","fileCount":23,"integrity":"sha512-i1/27xnOTYLG2ckyokzvLW5cHZxB1jOS9Pol4dw1jetwUZ+sJmmGxKMTA8suVD8TYMw9WUpiudzneyAQEjy5lQ==","signatures":[{"sig":"MEUCIARCTakU4LRPOQtKWTZcNWeP7YtkVhcERMnt1JIXVEDeAiEA9L0XQvnUZYjia4DR35telQxixcUhmpGyBhO09YxOH8Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICIaAshLVwfwIo1ePvg1ZIf96VN5cdPvPwI1th+cj0sZAiARe7ktfTslQ9NHFX6GduQLgYyOta2MEap5Sld60hxkFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1919144},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.5.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"5b9a1ab73610c0b977f1b9eadadbdc42cf511113","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.5.1.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-i1/27xnOTYLG2ckyokzvLW5cHZxB1jOS9Pol4dw1jetwUZ+sJmmGxKMTA8suVD8TYMw9WUpiudzneyAQEjy5lQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.5.1_1790914982601_0.24180795249579257","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"cc-safety-net","version":"2.5.2","keywords":["amp","claude-code","cursor","deepseek-harness","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.5.2","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"1339a1852dcea69f03cff75d5d79c8379fb00fd2","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.5.2.tgz","fileCount":23,"integrity":"sha512-WbA8YULq+y/C3q6SfJbyzPabCyN9vf6WVvB1EFvbeuM0Y+/PW2FMrpR/Q/HFodLTL+4SxNZMjiuEkuaqbmUKGw==","signatures":[{"sig":"MEQCIDS43M8c6VRIrhvK5qwtaAv3q9BPjgr53+u4Y5XIfmMaAiAeFK5wWrjPRJBmPAjL/YFN0wFHDOPs1Zq8/4N6KvOZfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEDSrlGLn54igvzozJX6md18JMLn2wgxWEQXdc/nl3W3AiAXaS1xyqZF0sTTESJhqGUJEQp81siBgv/DUJeXrEMTWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1915861},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.5.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"3db0a462eaf79c2d0cf79817c7d77d5e98c3437b","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.5.2.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-WbA8YULq+y/C3q6SfJbyzPabCyN9vf6WVvB1EFvbeuM0Y+/PW2FMrpR/Q/HFodLTL+4SxNZMjiuEkuaqbmUKGw==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.5.2_1791022303548_0.18573396203985681","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"cc-safety-net","version":"2.6.0","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.0","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"181ef1a0f0c5ab71bad7c9e875a3cc2f522052e2","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.0.tgz","fileCount":23,"integrity":"sha512-w+hHjasG2aX4MlQxe4GS5ONjADeNVwgfWKvn/ORHVaDDGd+NM/hQKhiAsboTF5iEs8qltFJn7wkYZmk1kkSn/Q==","signatures":[{"sig":"MEUCIQC+hG83bXVXU/p9qqOnllasF8kPcTgVk45EotU3i5aSZwIgRPi70+lZYGXnDKwyhKO4qjOzIVsIP1TLmskC2lfCzYE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAQkrgUJLvVg5fOhXKA6gPQ9TLG2OYeybRks/v9XDLb4AiEA+i1RQ+iXg6haOjlp1ulapcI7M3qQE6xjc16Se97bNr0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1944392},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"3793a43e9b1cab3458622c95175103bcf48ef1c6","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.0.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.7.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-w+hHjasG2aX4MlQxe4GS5ONjADeNVwgfWKvn/ORHVaDDGd+NM/hQKhiAsboTF5iEs8qltFJn7wkYZmk1kkSn/Q==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.0_1791198339857_0.8884471049945171","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"cc-safety-net","version":"2.6.1","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.1","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"5749ab038a7ae0e6f22254b7da9b0900d106e8c4","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.1.tgz","fileCount":23,"integrity":"sha512-HREoTjmrdHr99LkzdNPvyctfrAqC8qhY0F7vhcvHWkbISo+o2CoU+OtU1jLeUBzsCDCtPrwyw53t7t6U3g1k8Q==","signatures":[{"sig":"MEYCIQDEl4vg7R+YYE3Qb1DE7zSaHcibOnePesSnIgeVl/mNOwIhAIrlRHC8f9iuzJKZAd+FXM4rfLvhUCSxxCnadAcEKAWp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFghMCGbmazaVuu68kzUWDXsviOXUOuMXjlAphq6FCUoAiBnN4ukM6UmiyIt59v7tkdYDXff/ngUsSWbdfjBDwA2Kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1998920},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9c1af13ca623246b76470ee714b5cb90b92af71a","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.1.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-HREoTjmrdHr99LkzdNPvyctfrAqC8qhY0F7vhcvHWkbISo+o2CoU+OtU1jLeUBzsCDCtPrwyw53t7t6U3g1k8Q==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.1_1791458946221_0.2409552014790699","host":"s3://npm-registry-packages-npm-production"}},"2.6.2":{"name":"cc-safety-net","version":"2.6.2","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.2","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"fac3920b8b881ac06b5e4babdb8a7b5cde4689bc","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.2.tgz","fileCount":23,"integrity":"sha512-uDFvhdwaTgG/acP2d2GqznQ5/gm7vWnRUl/wul5ILi/x4nk+coCP+DVV6nrTDcFT81XQN3XF/x/m14uiTH0DJg==","signatures":[{"sig":"MEUCID3EKIVSB/j3TuxZP9eFJ1HOY+vglKHxr921dVVcqS7eAiEAoex5w88hmu4qBpboDIMFgjKmINsdUkf4/rgCT31425s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCMAzT4/oObK4jOwWo+ylTj2VXR4J1Ha2Ocrb67rkgIEgIhAPp1kXKnK6Jo05mXEnnvjMxxvN+mK/VbHS52YYq0WTcH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2000078},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"5ec6058f1fe26bd48a924d470710a73dc8d261e8","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.2.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-uDFvhdwaTgG/acP2d2GqznQ5/gm7vWnRUl/wul5ILi/x4nk+coCP+DVV6nrTDcFT81XQN3XF/x/m14uiTH0DJg==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.2_1791530846338_0.05204364592660582","host":"s3://npm-registry-packages-npm-production"}},"2.6.3":{"name":"cc-safety-net","version":"2.6.3","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.3","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"2d68c05a5bb473a292ebc795919a0e73999a25fb","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.3.tgz","fileCount":23,"integrity":"sha512-HLBRqSNOv9EPIr5w8MrlSSBgVL7tEPRszX4xa1OpbNoxSq9b7crAXdR2flk4VBZEOXJPaZealyWxp6Cy03S/cQ==","signatures":[{"sig":"MEUCICSpUF+dMUlpXYwRpmZUDt8LGi8pq263KI47qiS46q5gAiEAmMZuwFRNn5qH5XJAkSKDDZ8J/VVTsBJyXPaRQNQeJMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGDA3LGcJ2lKADD87+fbI87PLtjgL7WGmx4gEv8ixRYBAiEA0uaBHR/02lD+pyIInWJ/2jtCcU/u+/2E5+2Ys5JQoc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2002372},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"673b284e8216da6ffbbedd853ed46d7668c75496","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.3.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-HLBRqSNOv9EPIr5w8MrlSSBgVL7tEPRszX4xa1OpbNoxSq9b7crAXdR2flk4VBZEOXJPaZealyWxp6Cy03S/cQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.3_1791542935779_0.8427377213865979","host":"s3://npm-registry-packages-npm-production"}},"2.6.4":{"name":"cc-safety-net","version":"2.6.4","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.4","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"e1192edc5549e524d137936a3bac41cde52921e8","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.4.tgz","fileCount":23,"integrity":"sha512-m8Xekho6QQdEffh3eiszuJhsl7PccA/i47D1mQ8dMX/87V6Ys/B1WC3H8MpNInxnVKop8GbxYPKXse5817jWVw==","signatures":[{"sig":"MEQCIH86GLuE49lt+ibwHUfcCRY9gI3Jvaw5VgzpmwryqZndAiA3MBp/wSrLIHohoduaEImLnSH+c1qD2zEwJZHoU4HcSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQChLtUH09p8fy1DyBvy15uEVC2WgcsSJdGTAgz45R4h0AIgUg+bHRP/oIcak3gzZjDk2Uj7+2kLSY4jIYkUo9awijA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2002372},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.4.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"2171126797a158f8c5e93296ffd1dec770223984","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.4.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-m8Xekho6QQdEffh3eiszuJhsl7PccA/i47D1mQ8dMX/87V6Ys/B1WC3H8MpNInxnVKop8GbxYPKXse5817jWVw==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.4_1791555178287_0.4326570603601103","host":"s3://npm-registry-packages-npm-production"}},"2.6.5":{"name":"cc-safety-net","version":"2.6.5","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.5","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"2ca7922c9ed40d0e97a0456b61e9191d6a007770","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.5.tgz","fileCount":23,"integrity":"sha512-nMsoLg+jCCn9Ku2O18GOhXJfGW/y+YkXcC9CB3WLL7nuijBRzI0Ns56+Mv+/uTTCuYrIHXingJponeGXWwyiBQ==","signatures":[{"sig":"MEUCIEXnkwZwaVESUGHlFrgu32e6pYjBMcVpCB39p6tUGV+GAiEA7ejXlKX9j81EPTq74SqfnnkXOPYV/A8PxAiQbmJ8rCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAMJqih8VKJs1sdZgXYE9TMimtNjt0CowA7GQznsL4fdAiEA79TD9AGHOvXOu4wzUinPpY50xiQ7SnCgSSIdfcIRCXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2001700},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.5.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a6eef353356bf7cd740e0c25db7cd73bd1e00742","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.5.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-nMsoLg+jCCn9Ku2O18GOhXJfGW/y+YkXcC9CB3WLL7nuijBRzI0Ns56+Mv+/uTTCuYrIHXingJponeGXWwyiBQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.5_1791559862390_0.9623730354692583","host":"s3://npm-registry-packages-npm-production"}},"2.6.6":{"name":"cc-safety-net","version":"2.6.6","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.6","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"868337ce6e938ff48521e0802e8e04ada06cc978","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.6.tgz","fileCount":23,"integrity":"sha512-J2/NBF8PAkTzldtCfZampTh2LMmZ/C8dcbHgbTWbXgtX4bdEm6d2XNDLfCCnDl8fpKtXwCjr90bMyuqXqdjr0A==","signatures":[{"sig":"MEQCIG9CBLv4A5RKVniAmG2Ppd4KRvjBxg3VufwukUp68RYPAiBG5Mbqme8QNeOrmpQL+siW+EGHUJTCGVRc9DvSEw2biQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCxqOgJRZKTnElNHgi0u9fw+VZLWKAeYfTzGQcCHl4kcwIhAIqP4gv1WS14YwvQZ53bBttqsgsu58x1phX9RWGxJbpP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2001700},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.6.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"d718f4b3f7169fb3abf499c31d79b1453aa834f5","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.6.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-J2/NBF8PAkTzldtCfZampTh2LMmZ/C8dcbHgbTWbXgtX4bdEm6d2XNDLfCCnDl8fpKtXwCjr90bMyuqXqdjr0A==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.6_1791561988143_0.8872705806259984","host":"s3://npm-registry-packages-npm-production"}},"2.6.7":{"name":"cc-safety-net","version":"2.6.7","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.7","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"c6a3e5a17664d75dd55970a3cf1502f823790ad2","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.7.tgz","fileCount":23,"integrity":"sha512-ThYTVmKgCoY/gimxvPhnb3SRdGu0xUnmRoPLojkaqPlQdkUtBGJfAtsicT/m+YHppTIH1nxdAZFF9Ehe7Yn77Q==","signatures":[{"sig":"MEYCIQC/myFMBCcBJnPqCA2201/c3so+VLZC0FAR4TQKBNV7IgIhAPdUc4jiA0E5uKSdvlRJN9P1Lgf18cqf9+2GsylKVOy0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICJfS9o8PuPo77BhA//JA5QJs38fGAXC2pDnGaTs1nRCAiB9y/IJO9lKFh3CyHD5ePZRQVFLNoX/7vWhbCSPHnriVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2002623},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.7.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f9f2e5a84ab60e81dc1a4ec12562e23c5f7760e0","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.7.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-ThYTVmKgCoY/gimxvPhnb3SRdGu0xUnmRoPLojkaqPlQdkUtBGJfAtsicT/m+YHppTIH1nxdAZFF9Ehe7Yn77Q==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.7_1791619214669_0.3506681681361734","host":"s3://npm-registry-packages-npm-production"}},"2.6.8":{"name":"cc-safety-net","version":"2.6.8","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.8","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"a0f8fb3acf2313c0196c2edaee9d3d978ef4c9ae","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.8.tgz","fileCount":23,"integrity":"sha512-ilup20OOghG3OA/r90e94maz04XvDQmsFa72e4q10BreB9DkPB+bx/fd2GCXWwUVG7POC32Uys8zptXBPh3xSQ==","signatures":[{"sig":"MEUCIAVH+yUFzAUzY+JgPDC+RN991f4NwP3TvMVnGSMoF9uNAiEA8Pb9/QVbOmWvjFjkSY1uGA3JaO+F04uv8wTqUQfNnbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIG03jwbLWZxX1HQGnZvkJrPzxuCt5Egf+xJ8+OlijVc0AiEAxiM5HqYWIETdEHrdSsllDkG/eOtog9Mj48t5qz5pDB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2012783},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.8.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"eb97ff926e51aceee1b812413b3127290a5df93b","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.8.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-ilup20OOghG3OA/r90e94maz04XvDQmsFa72e4q10BreB9DkPB+bx/fd2GCXWwUVG7POC32Uys8zptXBPh3xSQ==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.8_1791682489330_0.9203449697690316","host":"s3://npm-registry-packages-npm-production"}},"2.6.9":{"name":"cc-safety-net","version":"2.6.9","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.9","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"0cfc6351637fbdfc525ec921d93b089518577a5e","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.9.tgz","fileCount":23,"integrity":"sha512-2W4zwTQTzDzSpHXTU2I9oIdhATl99VI7tVlGGymIfJFCBUnhFMCdZ5kBipcIn1PUkyIRgdgu40GWDPCeslYUEg==","signatures":[{"sig":"MEQCIAJdf/Lx6gEGXH3iqVLnDqwmbIdU9O4Cgeq0+o1hJ0BvAiAlDlHz6rdN3FliTbb11091I1tfzMO55upwwi0LnoEdag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDTlEcpq4pqmkLo5fnR5S0wHbthE9w7xtN5fcXIvnYyGgIhAMyo82dgyr66CQqkF1PYiaYwdNmmOpte2004qH5rN5nB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2017345},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.9.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"724aeb2253d95485f2396f2b2de0ce2ccdf384ef","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.9.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-2W4zwTQTzDzSpHXTU2I9oIdhATl99VI7tVlGGymIfJFCBUnhFMCdZ5kBipcIn1PUkyIRgdgu40GWDPCeslYUEg==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.9_1791790855828_0.9658271893120662","host":"s3://npm-registry-packages-npm-production"}},"2.6.10":{"name":"cc-safety-net","version":"2.6.10","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.10","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"c4a7dbb44c3555bd717ebf28add60e95c303b5c3","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.10.tgz","fileCount":26,"integrity":"sha512-pG208ywF+9IEoJoZKeMNm51x9Eu7FXusJGucNBOm1PwCyOk3JDHvdD7JSlsmsFIsHC9ewgbpMwIn9sSJGmiA9w==","signatures":[{"sig":"MEYCIQDPnnOdJ0BzS6+ykB/tMorQwp2ZpIkY7OeH0AcO9PrFOAIhANrh6APz1NGWYRHD98rmPUnLnhRCWG4q57NhnVSqPAJ0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD0gX4Q4pl1vfiesvFpQCBVCw2URKM/XDrvDHUvKggwCQIgAbFdnRqQc4Q/4eJ4B5KWezNBN5CKhQVsLuEYLadnMgs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2032411},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.10.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"c0596cde29faa7f8374ef91797e0e2299db84f28","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.10.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-pG208ywF+9IEoJoZKeMNm51x9Eu7FXusJGucNBOm1PwCyOk3JDHvdD7JSlsmsFIsHC9ewgbpMwIn9sSJGmiA9w==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.10_1791815275835_0.993366015022723","host":"s3://npm-registry-packages-npm-production"}},"2.6.11":{"name":"cc-safety-net","version":"2.6.11","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.11","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"7a7153344467b060bc511f30e54a6eacb84cf7af","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.11.tgz","fileCount":26,"integrity":"sha512-xPIZAQNE0hkyYjhmH1VdlGTlN28ZTsyRJiJTilflTvUwUbaiYOEK8KpV1B/VGW8CRic996QrjOpGncF/XcMIkA==","signatures":[{"sig":"MEQCIH00adEABRVuwz4fCxxyYaQoJFNn9tYzDxXd0ZCwMNJmAiAGzdcIu7Wjg4emTWPZ5kloaluxMj421A9KDoqSZsf1QQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC0HGCkv4szsUYP0WMCy0TJTkXAjZ0AA+HG8Lcnt10eiQIgS7MlyTo+XNl3QP8wD/U3o3ovMnN/iTe8E0vkIRfH8Zw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2039433},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.11.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"0626be7a791c17a0daa67ae90a899372c667056d","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.11.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-xPIZAQNE0hkyYjhmH1VdlGTlN28ZTsyRJiJTilflTvUwUbaiYOEK8KpV1B/VGW8CRic996QrjOpGncF/XcMIkA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.11_1791942888071_0.801613932007958","host":"s3://npm-registry-packages-npm-production"}},"2.6.12":{"name":"cc-safety-net","version":"2.6.12","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.12","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"b156ded3b1bd5120072977025f8fec617c43fc01","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.12.tgz","fileCount":26,"integrity":"sha512-+mdu6m/EDx671B2Hh4y4j3t0UQXz7ElQuQjCdLLkCJJfcvU95Hi+5pyniSLHWtIOT7vfqtH74fx2Y9NtIovt5g==","signatures":[{"sig":"MEUCIQDNg6j30Wg69EIjxlcPtvU+AWNbozI0Ua3BPXqEKUIYswIgJ7SXuMOOrW9T5bc1zcPC5YIto1j6ikVCoyCFdW40tpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFRTugzXCAdChxuV+zpPK1vWeiHpMIVmlv9cRetWq/zpAiAsIwuJRoKD2RuVzWFWxzjGr3tiKocWI6Htpo+YJGUX3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2029076},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.12.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8f62e92154f66854ad359aa963efaf6a8f9816cb","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.12.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-+mdu6m/EDx671B2Hh4y4j3t0UQXz7ElQuQjCdLLkCJJfcvU95Hi+5pyniSLHWtIOT7vfqtH74fx2Y9NtIovt5g==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.12_1792040616874_0.01902595513124461","host":"s3://npm-registry-packages-npm-production"}},"2.6.13":{"name":"cc-safety-net","version":"2.6.13","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.13","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"3be573dca16bb501cf6d281b4bb004c2b35a4cdb","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.13.tgz","fileCount":26,"integrity":"sha512-SliFTf8iQRruigFM4wKsPCPBv0uosPDN9EkwAnM7HjlBFvoWwpFMnUAGgCfwV/y51HC0l/pgbqWRUsdKy8Xd5A==","signatures":[{"sig":"MEUCIQCAevN7Q/PyNIR+wQdik51RBiNWpHsnl68i0lM2Ju5/MgIgJN8d2O04fm882wFN6YlSmshbJUdSt3C65MrpF2/u6OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCkwzNz2hIYLkbjnotS4F+y3c0n9YXVLE6+JjiMw2HnWwIgCQzLe3a6pZ8pBpzUMufPtprUaofOW4TjpDW8Bk8Fy0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2037106},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.13.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4fd49ef94fa9a34ce5dd690f6e964d3bdf49888d","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.13.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-SliFTf8iQRruigFM4wKsPCPBv0uosPDN9EkwAnM7HjlBFvoWwpFMnUAGgCfwV/y51HC0l/pgbqWRUsdKy8Xd5A==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.13_1792213395122_0.005276434306359823","host":"s3://npm-registry-packages-npm-production"}},"2.6.14":{"name":"cc-safety-net","version":"2.6.14","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.14","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"c8ad3b447f460d01cc05ca162629203bc9a3e6f9","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.14.tgz","fileCount":26,"integrity":"sha512-Dqbciju5/oHm5sCGG5ViMpljigbc5cTKOCW8W0f4luq4wplFMZuxn1QyHraFg6G8/PD/wy3vbeH81HbqJwTKrA==","signatures":[{"sig":"MEYCIQCaPsnMTKl1U9L2RZFEOzkDOt4Bsllw70f92YzXHi2olAIhAKCBVo6J4tDc00UV7ug5eayXR+/onyafhuuJDzdr2SwY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAlJ7b+hjtS0POJlwGJNI9KeUNa7lkclTTrPGNiSr2KrAiAmePXdYz5UMoGxgJrZkG570dS/i1GS+xhSVKpNgifJYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2047013},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.14.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9ef6d15eeb32ee9aec43d667631a6e9a0aad7da2","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.14.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-Dqbciju5/oHm5sCGG5ViMpljigbc5cTKOCW8W0f4luq4wplFMZuxn1QyHraFg6G8/PD/wy3vbeH81HbqJwTKrA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.14_1792300533369_0.8875171252320269","host":"s3://npm-registry-packages-npm-production"}},"2.6.15":{"name":"cc-safety-net","version":"2.6.15","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.15","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"c6e846923bb81d93474e73d042f61f96dd0babbb","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.15.tgz","fileCount":26,"integrity":"sha512-j/QkmWDmqqlU8vaTX+qx4q4CXGcaaq0jxwB3Wyb5cy69B6SCcDDD7rfteoDF55OA8J23Ti+nUqc2glQXWDqOnA==","signatures":[{"sig":"MEUCIQC9no2Glvv4AeVZTh9rNXB/iRhjMFTDIoxOf7zSd5r/nQIgFWVz34ZXDUexnn0wA6DWZrm8fZMr0sCgrLnh+BJvnO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICzWN9JdAdtyon/bzLBaWuuArXU3QxgS2Vz47xxoeCSPAiEApuTjuVsyYJxnro+0nS2qOiO6ltrEvrgHYk/yyGL/k2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2056503},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.15.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"5e51bf3af8ec4b2c20db37fcb6f6ef4b3071f21d","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.15.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-j/QkmWDmqqlU8vaTX+qx4q4CXGcaaq0jxwB3Wyb5cy69B6SCcDDD7rfteoDF55OA8J23Ti+nUqc2glQXWDqOnA==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.15_1792391531998_0.5579644800111494","host":"s3://npm-registry-packages-npm-production"}},"2.6.16":{"name":"cc-safety-net","version":"2.6.16","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","_id":"cc-safety-net@2.6.16","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"homepage":"https://ccsafetynet.com","bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"pi":{"extensions":["./dist/pi/index.js"]},"bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"dist":{"shasum":"8eea4c66e7a9c0b186e5a59fcd4c5b6ef7f655db","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.16.tgz","fileCount":26,"integrity":"sha512-a1kHFof385Jy0qzHPYKds0NlIc+NSAyW5u7jDUpf6c06zCWfW6fpTeyUTFTRYIxWdUZOnPaAf47qFeeJNcWnjg==","signatures":[{"sig":"MEUCIGOijOHfyRKiFgbbiF4cttpUX9eye/UD8d8FgEXVPbchAiEA/jf999SWjuldele2Vs1f+jf8BInxB59ATNvQAiC8y6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHrWj9KZmhEtb20RUMVPTINt36xhLbW4viGB2I1bLrr8AiEAkP/08Z+7257MMMISh+IMFiwFwJx6Prwzy+HFOUPKqdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2133932},"main":"dist/index.js","type":"module","_from":"file:cc-safety-net-2.6.16.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"c2526afe39744f65281304687ba6e41de02559c4","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.16.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-a1kHFof385Jy0qzHPYKds0NlIc+NSAyW5u7jDUpf6c06zCWfW6fpTeyUTFTRYIxWdUZOnPaAf47qFeeJNcWnjg==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cc-safety-net_2.6.16_1792410667040_0.36441067045490083","host":"s3://npm-registry-packages-npm-production"}},"2.6.17":{"pi":{"extensions":["./dist/pi/index.js"]},"_id":"cc-safety-net@2.6.17","bin":{"ccsn":"dist/bin/cc-safety-net.js","cc-safety-net":"dist/bin/cc-safety-net.js"},"dsh":{"bundle":{"patch":"./dist/deepseek-harness/cordis.patch.yml"}},"bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"dist":{"shasum":"6c3653b7923e440c02981853c2d2514d56940f98","tarball":"https://registry.npmjs.org/cc-safety-net/-/cc-safety-net-2.6.17.tgz","fileCount":26,"integrity":"sha512-sKozdZoVj+jpTNWaMiX1IgveQPLxAFpI9GBi1WBirinXM5M92dfJSqvNCj5UI2OCn+UJVNj5UXKUG7FeHDAxpw==","signatures":[{"sig":"MEUCIQDf3L81cuxEImGxfhf2Tjlv9yCkDJd209We0zxIhDSEKQIgExfcEPqiGbdf8MsH30047VFyUuISb7tH8MIRCmxAij8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAvjhhpKYqNiqgSuiDXsFX6Wmup/TJuU3YC04F8vCgJnAiBkI43pjHVjeM4IFlW67YWzGbgn/J6av2/ueYykteBQ4Q=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/cc-safety-net@2.6.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2138679},"main":"dist/index.js","name":"cc-safety-net","type":"module","_from":"file:cc-safety-net-2.6.17.tgz","types":"dist/index.d.ts","author":{"name":"J Liew","email":"jliew@420024lab.com"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./api":{"types":"./dist/api.d.ts","import":"./dist/api.js"},"./opencode/v2":{"types":"./dist/opencode-v2.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"69a5ad424ac416dc209c8268abdf84c1ff6523e6","license":"MIT","scripts":{"eval":"claude plugin eval . --ablation with-without --judge-model sonnet --allow-tools \"Bash(npx -y cc-safety-net:*)\" \"Bash(npx cc-safety-net:*)\"","knip":"knip-bun --production","lint":"oxlint src tests scripts knip.ts","test":"bun test --timeout 30000","build":"bun run clean && bun scripts/project-bun.ts scripts/build.ts","check":"bun run lint && bun run lint:comments && bun run format:check && bun run typecheck && bun run knip && bun run check-duplicates && bun run test:coverage && bun run verify:coverage","clean":"rm -rf dist","format":"oxfmt src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","gui:dev":"bun scripts/gui-dev.ts","lint:ci":"bun run lint && bun run format:check","check:ci":"bun run check","lint:fix":"oxlint --fix src tests scripts knip.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.gui.json --noEmit","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --declaration","build:plugin":"bun scripts/project-bun.ts scripts/build-plugin-tree.ts","format:check":"oxfmt --check src tests scripts knip.ts .oxfmtrc.json .oxlintrc.json package.json kimi.plugin.json tsconfig.json tsconfig.build.json tsconfig.gui.json .claude-plugin .codex-plugin .cursor-plugin assets/cc-safety-net.schema.json docs/residual-risk-registry.json hooks","cc-safety-net":"bun run src/entries/bin.ts","lint:comments":"bun scripts/check-comments.ts","test:coverage":"AGENT=1 bun test tests --timeout 30000 --path-ignore-patterns 'tests/e2e-live/**' --coverage --coverage-reporter=text --coverage-reporter=lcov","test:e2e:live":"CC_SAFETY_NET_E2E_LIVE=1 bun test tests/e2e-live","verify:package":"bun run scripts/verify-package.ts","verify:coverage":"bun run scripts/verify-coverage.ts","check-duplicates":"jscpd src tests --threshold 0 --exit-code 1 --no-tips --reporters ai --ignore '**/*.svg' --ignore-pattern 'import\\s[\\s\\S]*?from\\s[^;]*;'","audit:dependencies":"bun audit --ignore=GHSA-ch52-4w7c-c8xp","test:e2e:stability":"bun test tests/e2e --timeout 30000 --randomize --rerun-each 3","verify:repository-plugin":"bun run scripts/verify-repository-plugin.ts"},"version":"2.6.17","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b55914a5-15df-429b-ae1d-e181b9558f95"}},"homepage":"https://ccsafetynet.com","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"_resolved":"/home/runner/work/cc-safety-net/cc-safety-net/package-output/cc-safety-net-2.6.17.tgz","overrides":{"yaml":"^2.9.0","js-yaml":"^4.3.1","smol-toml":"^1.9.0","picomatch@^2.3.1":"2.3.2","picomatch@^4.0.1":"^4.0.5","@opentelemetry/core":"2.8.0"},"_integrity":"sha512-sKozdZoVj+jpTNWaMiX1IgveQPLxAFpI9GBi1WBirinXM5M92dfJSqvNCj5UI2OCn+UJVNj5UXKUG7FeHDAxpw==","repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"_npmVersion":"11.5.1","description":"A coding agent CLI hook - block destructive commands and secret file access","directories":{},"maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"bun@1.4.2","devDependencies":{"knip":"^6.32.0","jscpd":"^5.0.14","oxfmt":"0.70.0","effect":"4.0.0-rc.112","oxlint":"1.85.0","lefthook":"^2.1.10","@types/bun":"latest","oxc-parser":"0.142.0","typescript":"7.0.2","@ampcode/plugin":"0.0.0-20260724002649-ga3413e7","oxlint-tsgolint":"7.0.2002","@opencode/plugin":"2.0.6","@opencode/schema":"2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependencies":{"@opencode/plugin":"^2.0.6","@opencode-ai/plugin":"^1.18.29"},"peerDependenciesMeta":{"@opencode/plugin":{"optional":true},"@opencode-ai/plugin":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cc-safety-net_2.6.17_1792679461628_0.19420874502143248"}}},"time":{"created":"2026-01-03T13:04:57.694Z","modified":"2026-10-22T14:31:02.172Z","0.0.1":"2026-01-03T13:04:57.826Z","0.4.0":"2026-01-07T11:15:16.006Z","0.4.1":"2026-01-08T17:35:27.174Z","0.5.0":"2026-01-10T18:45:43.077Z","0.5.1":"2026-01-11T17:59:51.053Z","0.6.0":"2026-01-15T17:05:44.419Z","0.6.1":"2026-01-19T09:25:26.819Z","0.6.2":"2026-01-19T09:38:50.121Z","0.7.0":"2026-01-23T19:08:38.042Z","0.7.1":"2026-01-25T15:04:21.472Z","0.8.0":"2026-03-21T04:44:53.937Z","0.8.1":"2026-03-24T15:14:41.988Z","0.8.2":"2026-03-25T06:04:47.516Z","0.9.0":"2026-05-07T02:15:58.167Z","1.0.0":"2026-06-05T10:41:44.992Z","1.0.1":"2026-06-05T15:34:15.498Z","1.0.2":"2026-06-12T07:23:50.698Z","1.0.3":"2026-06-13T07:26:50.903Z","1.0.4":"2026-06-14T09:17:58.974Z","1.0.5":"2026-06-14T16:07:25.544Z","1.0.6":"2026-06-15T17:00:54.743Z","2.0.0":"2026-08-10T01:23:33.597Z","2.0.1":"2026-08-10T06:38:18.290Z","2.0.3":"2026-08-12T02:36:38.839Z","2.0.4":"2026-08-14T03:59:04.627Z","2.0.5":"2026-08-14T16:18:44.994Z","2.0.6":"2026-08-17T07:07:23.022Z","2.0.7":"2026-08-19T09:56:49.152Z","2.0.8":"2026-08-20T05:51:17.209Z","2.0.9":"2026-08-21T06:56:20.337Z","2.0.10":"2026-08-21T08:45:14.771Z","2.0.11":"2026-08-23T15:45:55.511Z","2.1.0":"2026-08-24T07:04:18.407Z","2.1.1":"2026-08-24T12:54:40.201Z","2.2.0":"2026-08-25T05:33:02.228Z","2.2.1":"2026-08-25T12:27:54.415Z","2.2.2":"2026-08-25T15:35:19.236Z","2.3.0":"2026-08-31T05:47:44.269Z","2.3.1":"2026-09-01T11:05:21.535Z","2.3.2":"2026-09-03T15:22:58.533Z","2.3.3":"2026-09-04T17:20:44.577Z","2.3.4":"2026-09-08T02:22:33.479Z","2.4.0":"2026-09-14T04:24:26.959Z","2.4.1":"2026-09-14T05:31:38.059Z","2.4.2":"2026-09-17T05:25:17.005Z","2.4.3":"2026-09-17T19:37:58.390Z","2.4.4":"2026-09-20T09:44:13.211Z","2.4.5":"2026-09-21T11:04:07.907Z","2.4.6":"2026-09-23T15:05:20.552Z","2.4.7":"2026-09-25T12:19:29.667Z","2.4.8":"2026-09-26T07:27:53.614Z","2.4.9":"2026-09-26T09:49:11.174Z","2.4.10":"2026-09-26T10:30:09.472Z","2.4.11":"2026-09-26T15:51:13.858Z","2.4.12":"2026-09-29T06:33:34.070Z","2.4.13":"2026-09-29T16:33:01.304Z","2.4.14":"2026-09-30T01:45:10.528Z","2.4.15":"2026-10-01T09:28:40.844Z","2.5.0":"2026-10-01T17:51:28.148Z","2.5.1":"2026-10-02T04:23:02.723Z","2.5.2":"2026-10-03T10:11:43.692Z","2.6.0":"2026-10-05T11:05:39.962Z","2.6.1":"2026-10-08T11:29:06.366Z","2.6.2":"2026-10-09T07:27:26.451Z","2.6.3":"2026-10-09T10:48:55.881Z","2.6.4":"2026-10-09T14:12:58.438Z","2.6.5":"2026-10-09T15:31:02.478Z","2.6.6":"2026-10-09T16:06:28.250Z","2.6.7":"2026-10-10T08:00:14.824Z","2.6.8":"2026-10-11T01:34:49.449Z","2.6.9":"2026-10-12T07:40:55.974Z","2.6.10":"2026-10-12T14:27:55.993Z","2.6.11":"2026-10-14T01:54:48.310Z","2.6.12":"2026-10-15T05:03:36.999Z","2.6.13":"2026-10-17T05:03:15.216Z","2.6.14":"2026-10-18T05:15:33.473Z","2.6.15":"2026-10-19T06:32:12.121Z","2.6.16":"2026-10-19T11:51:07.184Z","2.6.17":"2026-10-22T14:31:01.737Z"},"bugs":{"url":"https://github.com/kenryu42/cc-safety-net/issues"},"author":{"name":"J Liew","email":"jliew@420024lab.com"},"license":"MIT","homepage":"https://ccsafetynet.com","keywords":["amp","claude-code","cursor","deepseek-harness","devin","devin-cli","droid","factory-droid","grok","grok-build","opencode","pi-package","plugin","safety","security"],"repository":{"url":"git+https://github.com/kenryu42/cc-safety-net.git","type":"git"},"description":"A coding agent CLI hook - block destructive commands and secret file access","maintainers":[{"name":"kenryu","email":"jliew@420024lab.com"}],"readme":"<h1>\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/cc-safety-net-header-logo-dark.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"./.github/assets/cc-safety-net-header-logo-light.svg\">\n    <img alt=\"CC Safety Net\" src=\"./.github/assets/cc-safety-net-header-logo-light.svg\">\n  </picture>\n</h1>\n\n[![CI](https://github.com/kenryu42/cc-safety-net/actions/workflows/ci.yml/badge.svg)](https://github.com/kenryu42/cc-safety-net/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/github/kenryu42/cc-safety-net/branch/main/graph/badge.svg?token=C9QTION6ZF)](https://codecov.io/github/kenryu42/cc-safety-net)\n[![Version](https://img.shields.io/github/v/tag/kenryu42/cc-safety-net?label=version&color=blue)](https://github.com/kenryu42/cc-safety-net)\n![macOS](https://img.shields.io/badge/macOS-000000?logo=apple&logoColor=white)\n![Windows](https://img.shields.io/badge/Windows-0078D4?logo=data:image/svg%2Bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0wIDMuNDQ5IDkuNzUgMi4xdjkuNDUxSDB6bTEwLjk0OS0xLjZMMjQgMHYxMS40SDEwLjk0OXpNMCAxMi42aDkuNzV2OS40NTFMMCAyMC42OTl6bTEwLjk0OSAwSDI0VjI0bC0xMy4wNTEtMS44eiIvPjwvc3ZnPg%3D%3D)\n![Linux](https://img.shields.io/badge/Linux-FCC624?logo=linux&logoColor=black)\n[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](https://opensource.org/licenses/MIT)\n\n<div align=\"center\">\n\n**English** · [简体中文](https://ccsafetynet.com/docs/zh-Hans) · [日本語](https://ccsafetynet.com/docs/ja)\n\nhttps://github.com/user-attachments/assets/353c1441-9156-483c-b8e5-32fce7905a83\n\n</div>\n\nCC Safety Net (Coding CLI Safety Net) blocks destructive commands and access to secrets such as SSH keys and `.env` files before the tool call runs. It parses what the command does. Wrapping the command or reordering flags does not hide it. A broken config file never blocks anything. It is not a sandbox: it does not contain processes, set filesystem permissions, or watch network egress.\n\n> [!NOTE]\n> **[Full documentation →](https://ccsafetynet.com/docs)** covers installation, configuration, reference material, guides, and the security model. This README is the short version.\n\n## How it works\n\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/how-it-works-dark.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"./.github/assets/how-it-works-light.svg\">\n    <img alt=\"An AI coding agent tries to run a command or open a file. CC Safety Net checks what it would actually do before it runs. Safe calls such as git status run normally; dangerous ones such as git reset --hard never run, and the agent is told why.\" src=\"./.github/assets/how-it-works-light.svg\" width=\"720\">\n  </picture>\n</p>\n\n## Supported coding CLIs\n\nCC Safety Net supports these coding agent CLIs on Windows, macOS, and Linux.\n\n<table align=\"center\">\n  <tr>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#amp-code-installation\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/amp-dark.svg\"><img alt=\"Amp Code\" src=\"./.github/assets/amp-light.svg\" height=\"32\"></picture><br>Amp Code</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#antigravity-cli-installation\"><img alt=\"Antigravity CLI\" src=\"./.github/assets/antigravity-cli.png\" height=\"32\"><br>Antigravity CLI</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#claude-code-installation\"><img alt=\"Claude Code\" src=\"./.github/assets/claude-code.svg\" height=\"32\"><br>Claude Code</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#codex-installation\"><img alt=\"Codex\" src=\"./.github/assets/codex.svg\" height=\"32\"><br>Codex</a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#cursor-installation\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/cursor-dark.svg\"><img alt=\"Cursor\" src=\"./.github/assets/cursor-light.svg\" height=\"32\"></picture><br>Cursor</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#deepseek-harness-installation\"><img alt=\"DeepSeek Harness\" src=\"./.github/assets/deepseek.svg\" height=\"32\"><br>DeepSeek Harness</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#devin-cli-installation\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/devin-dark.svg\"><img alt=\"Devin CLI\" src=\"./.github/assets/devin-light.svg\" height=\"32\"></picture><br>Devin CLI</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#factory-droid-installation\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/droid-dark.svg\"><img alt=\"Factory Droid\" src=\"./.github/assets/droid-light.svg\" height=\"32\"></picture><br>Factory Droid</a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#gemini-cli-installation\"><img alt=\"Gemini CLI\" src=\"./.github/assets/gemini-cli.svg\" height=\"32\"><br>Gemini CLI</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#github-copilot-cli-installation\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/copilot-cli-dark.svg\"><img alt=\"GitHub Copilot CLI\" src=\"./.github/assets/copilot-cli-light.svg\" height=\"32\"></picture><br>GitHub Copilot CLI</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#grok-build-installation\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/grok-build-dark.svg\"><img alt=\"Grok Build\" src=\"./.github/assets/grok-build-light.svg\" height=\"32\"></picture><br>Grok Build</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#hermes-agent-installation\"><img alt=\"Hermes Agent\" src=\"./.github/assets/hermes.png\" height=\"32\"><br>Hermes Agent</a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#kimi-code-installation\"><img alt=\"Kimi Code\" src=\"./.github/assets/kimi-cli.png\" height=\"32\"><br>Kimi Code</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#openclaw-installation\"><img alt=\"OpenClaw\" src=\"./.github/assets/openclaw.png\" height=\"32\"><br>OpenClaw</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#opencode-installation\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/opencode-dark.svg\"><img alt=\"OpenCode\" src=\"./.github/assets/opencode-light.svg\" height=\"32\"></picture><br>OpenCode</a></td>\n    <td align=\"center\"><a href=\"https://ccsafetynet.com/docs/installation#pi-installation\"><img alt=\"Pi\" src=\"./.github/assets/pi.svg\" height=\"32\"><br>Pi</a></td>\n  </tr>\n</table>\n\n\n## Features\n\n- **Blocks destructive commands** such as `git reset --hard`, `git push --force`, and `rm -rf` on dangerous targets, and install scripts piped from the internet (`curl … | bash`), even inside `bash -c` or `python -c`. See [Blocked Commands](https://ccsafetynet.com/docs/reference/blocked-commands).\n- **Blocks secret access** to SSH keys, `.env` files, `~/.aws`, and coding-CLI credentials, from the shell and from the agent's file tools. See [Secret Protection](https://ccsafetynet.com/docs/reference/secret-protection).\n- **Tunes the policy in a GUI.** Run `npx cc-safety-net gui` to pick the Standard, Strict, or Paranoid preset and turn rules on or off. See [Modes](https://ccsafetynet.com/docs/configuration/modes).\n- **Adds blocks through rulebooks**: official packs for Terraform, AWS, gcloud, and Azure, or your own JSON. See [Official Rulebooks](https://ccsafetynet.com/docs/configuration/rulebooks).\n- **Shares policy through git.** Commit `.cc-safety-net/` so clones and cloud sessions get the same rules. See [Team Setup](https://ccsafetynet.com/docs/guides/team-setup).\n- **Embeds in your own tools.** Call `checkCommand` from Node.js without installing the hook. See [Library API](https://ccsafetynet.com/docs/reference/library-api).\n\n## Quick start\n\nYou need Node.js 18 or higher. Install into the coding CLIs on this machine, then check that protection is working:\n\n```bash\nnpx -y cc-safety-net@latest install\nnpx -y cc-safety-net@latest doctor\n```\n\nUpdate with `npx -y cc-safety-net@latest update` and uninstall with `npx -y cc-safety-net uninstall`. Keep the `@latest` qualifier: a bare `cc-safety-net` spec can run an older copy from the npx cache. Per-CLI requirements are in [Installation](https://ccsafetynet.com/docs/installation).\n\n## Development\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) to report a bug or request a feature.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}