{"_id":"claude-settings-guard","_rev":"29-18dece38ef3d966703da5917640355cb","name":"claude-settings-guard","dist-tags":{"latest":"0.12.2"},"versions":{"0.2.0":{"name":"claude-settings-guard","version":"0.2.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.2.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"2abd2c7226fd95a09a6c0db39f40484919df1d7a","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.2.0.tgz","fileCount":10,"integrity":"sha512-OXT1F3khwUpg7VmRWC7dD9CY/0AvXbjN4h5+a/Gvz24r79dl6mRlgBTjQfrbzuLA9e+Oyf0+CxYZGCW5ZL1v3g==","signatures":[{"sig":"MEUCIQCC6MSJu1B2oS086vY64NsdgCT+pckmWH6vQCfuaSIhHAIgM/FT23T84t8Zgjjnz1JvwF6dxA8zmQ5uJpRSZrmJfHs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120026},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"f9d9e77ffda6177cee0193168bf6e131fa259bde","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.2.0_1773050685825_0.45132917321944244","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"claude-settings-guard","version":"0.2.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.2.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"273d56a0f1e86f3f8e81f17f0eee0ebe67ee5c38","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.2.1.tgz","fileCount":10,"integrity":"sha512-Ok0wx8hyKXBNE9O/eMYwYkIqnd9BOJP4RNk2APnfOMP4h1PTB8Iz1fxbiXGFBoz7v1RayIW0bcEfYiPvsG6zQw==","signatures":[{"sig":"MEUCIANtzak1MtEV9vjD2P0LUJyeH0RNCawKUHII59V3HhNBAiEAquxXHplLiqK1iA5aCIjYO3N0AOnbmQtz4bekXxJ3SHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137214},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"1d8ffd6813021f2946db4dcb5a05cacf58e4b894","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.2.1_1773130778255_0.8323827015623193","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"claude-settings-guard","version":"0.2.2","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.2.2","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"06fca2de9a2d81e592fc51097dbd781eca39b078","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.2.2.tgz","fileCount":10,"integrity":"sha512-7cxxh7FjV7DuutGnOK/6DbmcqT0vvd9/QPQoFpTd0Ly+4mwksiVjov1BTxc/SPYaRGLIpHSwGk/xKH2g7YreQg==","signatures":[{"sig":"MEUCIQDo0obScLgMBbHzMrgQsd6pp1exOEU9CtC5ZfBYlD6bTQIgUAyl8aCVATyw++PdOXWroqILbPQHMybAwzZzxj3JYh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138229},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"3cb6cc1a3bab2be45eba0aa1c55e072f8ba4a8fb","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.2.2_1773132368230_0.8263293368600226","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"claude-settings-guard","version":"0.3.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.3.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"f83d2e40d8e11a76402780cf71814580dfa75bf8","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.3.0.tgz","fileCount":10,"integrity":"sha512-E7r2/UfYZcXj9Myayryrer3zCLAsPIKyEHRbEioBqFMtS7Uno7xoSFfhYgowSQ8wvOcOBJOJfFG16SASHLf9cA==","signatures":[{"sig":"MEUCIQDUyYjC4fo/E+ylyK8+AB7pxy9wPvLPwzHeWOAEnyJ0WAIgWcF0v0ntqzLQR2ZOlgp6rWnll+6dBQtWf0DiJkjKFcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154758},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"53fe096dd592d868f37fb2ffcca0aafbadf1bece","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.3.0_1773139811977_0.32595658192564625","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"claude-settings-guard","version":"0.3.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.3.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"c74bcc53fc1e3aad9dc361e4b0731dc658baa288","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.3.1.tgz","fileCount":10,"integrity":"sha512-BTQxIaCRHdXA128WkIcd6RSFV/K+wrVcFRR2oytL3tH0GQ8VRfK3lEatuWw74PTOmZzu0ncugCdhKt1raJgj1A==","signatures":[{"sig":"MEYCIQD3dFFpvRNbn/1YKPkPdJX0Oa/t+10F+UWVIRW2EfbfEgIhAJnZ59XBCD05zTlN/eHJ5/lFoJIWrHwJNoZTuaCSqMew","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159177},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"7b15da715b4fb76bace6f95e8ee16448b5d96a9f","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.3.1_1773142372946_0.33989345715056674","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"claude-settings-guard","version":"0.3.2","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.3.2","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"b8697dc579ad21bf54c03f1b0a40378c2d755e8f","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.3.2.tgz","fileCount":10,"integrity":"sha512-xWrptUpUgNd/mWhu4JwE4j5vxHZVxPJy7wxrOhs1LtKkyAcy+HpB94dMcumtIcj4pDelYKIzLy0X/5Otl5m6bw==","signatures":[{"sig":"MEYCIQCBMaXHw45T1ZzwdRqY1PbLQTGgUuUlWqkkYC9FNTR+WgIhAOo4R/3W8bLENuMcOq53gzjp4cxLzqQPhEKg0ty+Mb9M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162014},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"32949b20305595e433f10cf07779c6a5b5d09f16","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.3.2_1773144184627_0.7295681021193547","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"claude-settings-guard","version":"0.4.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.4.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"c55196ce88288337732765bc0eb86f7f4ee4cff0","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.4.0.tgz","fileCount":10,"integrity":"sha512-/y/cTyeqQSJpKjuzMclfCtbo+5QAHtI7EcTSNMdbiByRipYU58HcdeVyTaI3f5+t1mbTvG5unXiUfjO0KEv5Gg==","signatures":[{"sig":"MEUCIQCXiW88TKb/iW+PKQfdWoCLk7zgeV0BWmyCWATS+4YGFQIgap1xmGqz+HOHPkscUuvi7LoXQQEQ1ElU6Vf5Bdyh0ho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167138},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"3faa88291d9aea7a075b474546289c4a5d38ebd6","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.4.0_1773153172545_0.225478963200342","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"claude-settings-guard","version":"0.4.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.4.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"8443fc8a0b81572c72059160a810dd298316ef86","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.4.1.tgz","fileCount":10,"integrity":"sha512-QjeUc7swsSa+s0myah/BLP9b9Qd02tgicfhGnN9f2NAoLEYRc8vrPLdzzdzZCLIGFsnCtXcwl19E2wmOtB0fIg==","signatures":[{"sig":"MEQCIGRZrN2xW0vdkTxruuchJCcSFxmSFriwwrtPMhEffZAdAiAF+jlwqno8AZdE53RqXJq8lFLAAUlcW2yNpRdTKwpnbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169603},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"2f4e100c1506eedc9626b671a8004cf22dfb5be8","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.4.1_1773193399429_0.9251943776393579","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"claude-settings-guard","version":"0.4.2","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.4.2","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"b2ece824420647df9367f0c11197cd9a2e4746fe","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.4.2.tgz","fileCount":10,"integrity":"sha512-3oNeMYRwJAjIldkMcYCE/DpyJfH4JkwVrdl0JGdKj6BC3swLwJnq/w1PnqCAWS4ilZnt4Gj7gAOBV7k5Q75jCA==","signatures":[{"sig":"MEYCIQDC1fAdyFg4Zh2WI3oHX/WvBJzbhgIt/UzAngYqnr8xjgIhAIQkO59mNPOY5jEBSy+MRitiRnr8wDJj9R3FMMNGjcQy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170662},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"4833376306c65a156eb7dcdd23daf9f456ea734b","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.4.2_1773367264878_0.729939999698316","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"claude-settings-guard","version":"0.5.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.5.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"f925821d2fcc0e58d8b1a5d23bdac256988064f0","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.5.0.tgz","fileCount":10,"integrity":"sha512-U7Rg/L4Aikf9LUNJDisEqTEeaAxyl7Z5SG9z7SjzquEnOvys9I1Q4V2D1/nCmBxK5k9JBBqEpzTVXF5DuqTTbA==","signatures":[{"sig":"MEUCIQDiglMxM7Ew1mlrYsjKq+RQOCgHvhtLtOSgKlcrj1Q+AAIgFkVTfHX8nU1TP1IykEpTbSsiM4GL5z8NbcXlHOt7lek=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171031},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"922f5b8aa45f22cee971bb454d327a4e9a11d98c","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.5.0_1773650200740_0.9218546271938901","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"claude-settings-guard","version":"0.5.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.5.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"37794420f62b7fc570072fdf853a10d6f942a0c2","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.5.1.tgz","fileCount":10,"integrity":"sha512-HfklWgYykUY43G1p49DTzxPhomUd55TC6M04GaaZmslnRcPDQMS09HQyBeOAH2aOxkvRpS5YnqveJa9rbx/ATQ==","signatures":[{"sig":"MEUCID3U1GbGOMoqJFXmwoH4XMSkBMofvUXJYWFu4tpiwfJ8AiEAsZssAM72gm9Qlt4FrQ82vEUdF7kFlQiVodnN8UbO9Ws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172202},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"9658b6800e69a30a08b287a5f25a452c5de5fc84","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.5.1_1773651739828_0.6283790909047438","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"claude-settings-guard","version":"0.5.2","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.5.2","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"5bb38065ffaa13d7a13e0568543c9bccf8079b39","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.5.2.tgz","fileCount":10,"integrity":"sha512-xNBn9HN/H9IkLNSw13s7GqRv0weWLTu3QW5R7M+4xUhl6Wh0qMFXog3rull0zmDHb2nj0We839p/xVfxuLdjdQ==","signatures":[{"sig":"MEUCIGSZcMdFzbkj+BAXLzZ3fuoJcBHhjR4AOCfGv5CpofDCAiEAzjI/kyHYgEgUjBM36EhBv3514J+vkIQJ5P/EkrKMPoI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172554},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"3682184aa225a2658dd1fd6b23bcbee3432b50ec","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.5.2_1773653189416_0.28911775325827027","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"claude-settings-guard","version":"0.6.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.6.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"cfcce061f2e13caf7332fe1e96527a908dc4a88e","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.6.0.tgz","fileCount":10,"integrity":"sha512-g14ENbHGIKkxzHGxEBYq9hRkfbIUM84lGUcTUGY+x8yIkMxJZW7yT4a9yDffdDjlQyghZgagNs7VT3bNe2aIRg==","signatures":[{"sig":"MEQCIF+zGHQn103tVRH6sKDOWKotQxGCnZJBpet52Vr5yXCcAiA5Muoy9MUy6EU0miwLOkPCY2vBBeXqOoZa6fm+2hCywg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201073},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"c6cefd831f09c8062d58ead4a8cd41aa58456cc9","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.6.0_1774433670057_0.9159118538904891","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"claude-settings-guard","version":"0.6.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.6.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"5403e37a8915435d31b97172f354660d90f2be1e","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.6.1.tgz","fileCount":10,"integrity":"sha512-MizdCCkITEOuybKonOKkGK8Gas4tYSMKCv1svvTA6KKmVWqi8gLbrHMLdbI0MBsuY0gErDNLCfByH2x/P17r0A==","signatures":[{"sig":"MEYCIQCTM3L50rtew4fYbBiCKThf7rj7SMXuJk/reHiXbe8n2AIhAJ7bO8hW4QEPzm592om7yNZAncS1lm+KAkVKPN2/3ksT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201922},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"5a3a36009467ffc710ff225f70e619084024855d","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.6.1_1774434817703_0.6496132099816585","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"claude-settings-guard","version":"0.7.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.7.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"c5fc3f55151c0b6810441c65d57e1c4ac1ae87a0","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.7.0.tgz","fileCount":10,"integrity":"sha512-tYyxqElCBP5D94zoWy+0fcJ5HDoHe4oHFTn7jkXMVrOOYF5cPGEWfGg7C4j35+17kjCYpLDPepj9HZ6p5Ve/PA==","signatures":[{"sig":"MEQCIE8o675o7UzTLl0/6HuMd9dVYeJzpo2QJkNsjyJH8ceDAiAWbR+kM9cRauydjrNlUswY3U/mRy/h43Q1LCKaUVyL6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205793},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"9010474ab7891f14113b9593159d8bee707cdab7","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.7.0_1774437291086_0.9217007760444589","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"claude-settings-guard","version":"0.7.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.7.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"c96cb2781377780db06062600f7ad80caafee468","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.7.1.tgz","fileCount":10,"integrity":"sha512-CPJ0HwzqH36PhEvmBE/yYZlrlTlljmCSHRgErQqXF5urIN+B10/BRRjin2SFNvilPDRFi1X72+JL3eRZrCKA3A==","signatures":[{"sig":"MEUCIQD6IGHjSYe+n9Hxf/mNsH1wwRdeg4jKkYKM1omxN0o/VQIgG3loS//OAZIKaOQ0MRPEpNnoIHul+enfjrB3S3zqWNA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205879},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"3401c71bb225418ef2c899c39803d636008d52ac","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.7.1_1774438083211_0.2784455568608377","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"claude-settings-guard","version":"0.7.2","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.7.2","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"65048f251fc817c443195b0ebcd0799ae91f91b9","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.7.2.tgz","fileCount":10,"integrity":"sha512-wppql7iWo7OWplAq6+zOlYfYubKt0D8GjI6+HCO+lyfBWqRE1j4rpMKz0+SVRyHWnvhY3MYooPI5WPkBZlHWUQ==","signatures":[{"sig":"MEUCIQCUnxq0ga/lunSYf6aIwFm7/T1v4xsDeU95mUEFH40BZgIgbt6KvtjNtCphSL32DdzALWtbXl1CTdx8zon0Tyd91iM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206674},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"8ac45c7bb3b0663d0d91465464f1e7c8825c847a","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.7.2_1774439777595_0.8174850063355883","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"claude-settings-guard","version":"0.7.3","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.7.3","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"31ba73a5f34deefe3719c8251b0cad8124118cc4","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.7.3.tgz","fileCount":10,"integrity":"sha512-8eSsNtE8cLMnWrPuMQvE+0QlJECEwFHkSaaCT5JWgRckENgC4OOgYWA49Ped7n5iXbzh2uihdGDgfr5sCk03jw==","signatures":[{"sig":"MEQCIBqfY2ozscackG41Ei68XWC5PTH3dzGeLodE77MpKnfaAiBMRFPSXEW/4ojuBd/vic9TX8nErXpNz/iR6elIXUNEsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207064},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"9864ac6d57ce79ca3716d08f8e5ef33987ce2894","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.7.3_1774440020091_0.7017883731692454","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"claude-settings-guard","version":"0.8.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.8.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"2a880f969f950f8fb5d11e102b6ff823d689c7e3","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.8.0.tgz","fileCount":10,"integrity":"sha512-GRm5BW0fmHS3P8xvMYOMKPuoPc/KkQnxAydrhkm5SdT1p+3cD31nY+hQTWDyuCP/kccj5FsQz0nyn3vCwDECdQ==","signatures":[{"sig":"MEUCIFwAy4KnDDCD0VShh41aAwS6/+dQApflb7IONKT3uU/2AiEA0EH/MH5Bu2SB5WN5MasGAaaPtPL1di2ZyhrWE+B3IGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172554},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"76a6a669b46ec7a8495498b7806dcd504f35f831","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.8.0_1774444962137_0.31799365945931624","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"claude-settings-guard","version":"0.9.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.9.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"57cda83e9d9146127af96c4569b2986b93103cd9","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.9.0.tgz","fileCount":10,"integrity":"sha512-y5ESFma3xDhjii+IhOvzKHzVtw/wjwqCeK/5uPaHzfR5gn3pQ73fMlGtjQfAJ4mjsq0LV4jf3z9zRXdtuaTuzA==","signatures":[{"sig":"MEYCIQD7/bFrJ0dY32kJKXnFQmMPQoobi/7X3g0AxL4OXkpw0gIhAK/xlQZuSnp57iipP/TIj94HjmqY3+5wV020HV84Y5+T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176706},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"8fbeed990804bb28e62453a107c0a47bfd23523b","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.9.0_1774449007984_0.20737020064279066","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"claude-settings-guard","version":"0.9.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.9.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"286d18fe176e517508ec70c571202f7328c7a1a8","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.9.1.tgz","fileCount":10,"integrity":"sha512-eMZKZVlHsu13FizcTblZsCA3XzeTLPLB5wYFCEOCWvPRe8JYKWyEHcO18y6cecB9si1Fgg6yVfoGE7znYh53fA==","signatures":[{"sig":"MEQCICwEWvuYg3wEbd8EbV86E9WwmqqrNR+eY6ZSBQdbmVPLAiAGp8/OMxF/ZbCGfvzQSSUfEKW5Ma5D++SYBEHYFfQb9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176763},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"eafedf8b7a1cae3ad7591318598576d7f13ddaf9","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.9.1_1774485113940_0.5981954963279272","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"claude-settings-guard","version":"0.9.2","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.9.2","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"e3e0b8b1d66c81b96476f3eb6ad011c952ffb91a","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.9.2.tgz","fileCount":10,"integrity":"sha512-I/P6G8oholkNrWkYWoykJl854vnGeDcJQoikGXffcBJyJgqhWNfLHBO/PuMB8mboFNzA0U7gBk58HBWVN6mIwg==","signatures":[{"sig":"MEYCIQDcNizQZqHJVAxEXvzJtJbtaHbfugfQo97XFMi9ZGS0bgIhAPoGHMma5I7MkP017rI2cMZK7tq6vNyqIkStyIYNlN6a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177352},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"6a5c4ca4366c7dc9a86c9ee0d97b44b59a6115bd","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.9.2_1774486786654_0.3444625915659174","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"claude-settings-guard","version":"0.10.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.10.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"d38f7200c3e30d512a48dddd12049d1833b9873f","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.10.0.tgz","fileCount":10,"integrity":"sha512-OgiqDDI0Ya02zUahqGSB5I3Ba3SMZfptmG1wFgPI9I0QzBEp3jJ5RJA86IiGeic6APJnAo6wBuvm0+BkKVZkbA==","signatures":[{"sig":"MEUCIGFqYe4hhxQivm6+o2E2a1rmqt3R5ZZVpPEflacq4TFiAiEA6fek+DWv9uFbCADOFzrpHDOFFzuZmzsrKrZIUhjqjr4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193630},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"5ce1826ebe9bdec2633581e892175867a3a23c1e","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.10.0_1774490708931_0.6606323085426169","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"claude-settings-guard","version":"0.10.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.10.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"395a2d560e523b1c322885f95528240de449db1a","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.10.1.tgz","fileCount":10,"integrity":"sha512-oxlYibiRpPO+Vun5Swi96LopvdFSBfLpDjSTNWHH193dAvc2sieBrHi1wU5RmRNUWkL1Wq1aUzU8UZeMyOyibQ==","signatures":[{"sig":"MEQCIA4FWa2QkF+SoEpAChOPq5z/cfWVliC47rTYPk+idPC5AiBee/QY7QoL3KP+7u77auibPniug8B29b7SWZOeC7BxTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195506},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"a56092e06d273a569f2f812ee35e0c285200fb7f","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.10.1_1774491017796_0.3236545013676464","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"claude-settings-guard","version":"0.11.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.11.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"e86342704470e8f1ccf4e6f60e2d1191d91f37da","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.11.0.tgz","fileCount":10,"integrity":"sha512-zBNHAqDp9pfpj17p1DZXzh6cdtZuWeYzg7qOkW3uoLe4ca7UgYW96+mqa3UUFw+7PyvxN/9MEhchJ0dIYLdYLQ==","signatures":[{"sig":"MEYCIQCqpkHof7VCiNVrzD224uuZ0gqHRomMRAERJPja3syMPgIhAKKrRwQVZj7XKFhRy2wgshhtWJcaPMVNR5Pnlxu8g2eD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198177},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"74108dad64128fdeb6e822879096a72bbc675f74","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.11.0_1774499900393_0.9917472967338727","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"claude-settings-guard","version":"0.11.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.11.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"042ce6f680f8aefd2dec4abe98de07067ba0eea4","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.11.1.tgz","fileCount":10,"integrity":"sha512-11bAkCGFlrNw2kcxwVKNx9ZhQIe7MDkqiMuQ9WZ60rxy72N99h/CTUZixK9BbUOsDoeoIqoJupXgy6AM+oAxkg==","signatures":[{"sig":"MEQCIFfFPhr3GFsYEipIgV4cmIfIrQrGLLLTCoMQduslK5e3AiAvSCOVMf1SLmMqwcWvuR/8O5rL+Sq8WlhUd35shYh+hg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196830},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"7e36a897833bf76dae22b4d5e010dc01e29f3f61","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.11.1_1774500495737_0.1690993549939439","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"claude-settings-guard","version":"0.12.0","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.12.0","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"34d7aa349b50d72eafa8bbc51bd4a8fa9a495890","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.12.0.tgz","fileCount":10,"integrity":"sha512-qFEd2rRZ4jpVgXh1gowFpJgAo4heXQwo7Pft+W19rrFcUdE5DpoJ0OyjdjxDxNC2pe1ZzEeDn8XkbylMInMxDQ==","signatures":[{"sig":"MEUCIQCdY4bYFntyJQMonH9HfAxm8j5wA20CAkW3eEwdY9Ap4wIgKIxwCrBWc858f+R1k0LKJNVe+juSevSr15s7zSezN3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198159},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"a34d5f5199b963abf5b34fd6a2131a47c3a20590","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.12.0_1774503695952_0.39773179124206237","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"claude-settings-guard","version":"0.12.1","keywords":["claude-code","settings","permissions","guard","security"],"license":"MIT","_id":"claude-settings-guard@0.12.1","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"dist":{"shasum":"21e553eb6cf77507be268cdd9ac62440966666da","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.12.1.tgz","fileCount":10,"integrity":"sha512-JQ32YS8IXRK9U0iJnhdBGHIWszFOwPic6WvtIarHBIBL0TfafL6dAhQkDHsdxa+x+1Y4hvv6NqpmA1RRBYsidg==","signatures":[{"sig":"MEUCIDPnA9PPCtXO9vRf1XH4FERWQrEfjHhzE2qXt4tc0DnzAiEA9IdlDFbRGIUBFcwlVY8fVwzc/lqABqBuzJqbHKQm6Ik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198606},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"a1b10e0724ec34b5942f75fdd64995d5c4503c8e","scripts":{"test":"npx vitest run","build":"tsup","start":"npx tsx src/index.ts","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"_npmVersion":"11.4.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.2","chalk":"^5.4.1","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.0.0","vitest":"^3.0.7","typescript":"^5.7.3","@types/node":"^22.13.4"},"_npmOperationalInternal":{"tmp":"tmp/claude-settings-guard_0.12.1_1774948517125_0.23957679435634338","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"claude-settings-guard","version":"0.12.2","description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","type":"module","bin":{"csg":"dist/index.js","claude-settings-guard":"dist/index.js"},"scripts":{"build":"tsup","prepublishOnly":"npm run build","start":"npx tsx src/index.ts","test":"npx vitest run","test:badge":"npx tsx src/scripts/update-test-badge.ts","test:watch":"npx vitest"},"dependencies":{"chalk":"^5.4.1","commander":"^13.1.0","zod":"^3.24.2"},"devDependencies":{"tsup":"^8.0.0","tsx":"^4.19.3","typescript":"^5.7.3","vitest":"^3.0.7","@types/node":"^22.13.4"},"engines":{"node":">=20.0.0"},"license":"MIT","keywords":["claude-code","settings","permissions","guard","security"],"_id":"claude-settings-guard@0.12.2","gitHead":"a8730ffa799ed234d569aa78cac1b3c8033eb279","_nodeVersion":"24.3.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-VKh7F81uwE27j6vaGu9NJ/qgZ2GaCwnazookZ4QzhV0RqIyOQO4Csqd7RdotRPUt+gzr2nJ9UOVNMuNzz2tw7Q==","shasum":"10c2508b69b0a0d012efd56b5d629da19c96403e","tarball":"https://registry.npmjs.org/claude-settings-guard/-/claude-settings-guard-0.12.2.tgz","fileCount":10,"unpackedSize":201680,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCKvzAonWYYmGYyYQ51KEa+cdeWHZrXxF0PGuVHDs7quwIhAIJSri/VGmIM97W4mDXpmMx83v/qc9XU42bIkjHFR3Iv"}]},"_npmUser":{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"},"directories":{},"maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-settings-guard_0.12.2_1776616272139_0.800234996355579"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-09T10:04:45.824Z","modified":"2026-04-19T16:31:12.738Z","0.2.0":"2026-03-09T10:04:45.975Z","0.2.1":"2026-03-10T08:19:38.410Z","0.2.2":"2026-03-10T08:46:08.375Z","0.3.0":"2026-03-10T10:50:12.124Z","0.3.1":"2026-03-10T11:32:53.099Z","0.3.2":"2026-03-10T12:03:04.811Z","0.4.0":"2026-03-10T14:32:52.716Z","0.4.1":"2026-03-11T01:43:19.653Z","0.4.2":"2026-03-13T02:01:05.021Z","0.5.0":"2026-03-16T08:36:40.874Z","0.5.1":"2026-03-16T09:02:19.987Z","0.5.2":"2026-03-16T09:26:29.535Z","0.6.0":"2026-03-25T10:14:30.193Z","0.6.1":"2026-03-25T10:33:37.847Z","0.7.0":"2026-03-25T11:14:51.263Z","0.7.1":"2026-03-25T11:28:03.383Z","0.7.2":"2026-03-25T11:56:17.746Z","0.7.3":"2026-03-25T12:00:20.259Z","0.8.0":"2026-03-25T13:22:42.295Z","0.9.0":"2026-03-25T14:30:08.160Z","0.9.1":"2026-03-26T00:31:54.159Z","0.9.2":"2026-03-26T00:59:46.804Z","0.10.0":"2026-03-26T02:05:09.138Z","0.10.1":"2026-03-26T02:10:17.941Z","0.11.0":"2026-03-26T04:38:20.543Z","0.11.1":"2026-03-26T04:48:15.858Z","0.12.0":"2026-03-26T05:41:36.094Z","0.12.1":"2026-03-31T09:15:17.276Z","0.12.2":"2026-04-19T16:31:12.299Z"},"license":"MIT","keywords":["claude-code","settings","permissions","guard","security"],"description":"Claude Code settings.json permission guard - diagnose, migrate, and enforce (unofficial, not affiliated with Anthropic)","maintainers":[{"name":"hideosugimoto","email":"h8.cedarmail@gmail.com"}],"readme":"# claude-settings-guard (csg)\n\n[![npm version](https://img.shields.io/npm/v/claude-settings-guard)](https://www.npmjs.com/package/claude-settings-guard)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen)](https://nodejs.org)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Tests](https://img.shields.io/badge/tests-1045%20passed-brightgreen)]()\n\n[日本語](#日本語) | [English](#english)\n\n---\n\n## 日本語\n\n> **免責事項**: 本ツールはコミュニティによる非公式ツールです。Anthropic, PBC とは一切関係ありません。\"Claude\" は Anthropic, PBC の商標です。\n\nClaude Code の `settings.json` 権限設定を診断・修正・補強する CLI ツールです。\n\n### Quick Start\n\n```bash\nnpx claude-settings-guard\n```\n\nこれだけで対話型ガイドが起動し、以下を自動実行します:\n\n1. 設定の診断 (レガシー構文、構造問題、競合を検出)\n2. マイグレーション (レガシー→モダン構文の一括変換)\n3. テレメトリ分析 (使用パターンに基づく推薦)\n4. プロファイル選択 (minimal / balanced / strict / smart)\n5. 二重防御セットアップ (deny ルール + 強制フック)\n\nCI や自動化では `-y` フラグで非対話実行できます:\n\n```bash\nnpx claude-settings-guard -y\n```\n\n### 解決する問題\n\n| 症状 | 原因 | csg の解決策 |\n|------|------|-------------|\n| `allowedTools` に追加しても毎回許可を求められる | レガシー構文 `Bash(npm:*)` を使用中 | `csg migrate` で `Bash(npm *)` に自動変換 |\n| `deny` に設定してもブロックされないことがある | Claude Code 内部のパターンマッチングバグ | Layer 2 フックで二重防御 |\n| 毎回 Yes を押す手間が多い | 頻繁に使うツールが allow に未登録 | `csg recommend` でテレメトリベースの推薦 |\n| 設定の構造が古い | トップレベル→`permissions.*` への移行が必要 | `csg migrate` で構造ごと自動変換 |\n| `.env` や秘密ファイルが読まれるリスク | deny 設定が不十分 | プロファイルで推奨 deny ルールを一括適用 |\n| `curl ... \\| sh` で deny をバイパスされる | 複合コマンドの解析不足 | Layer 2 フックが `&&`, `\\|\\|`, `\\|`, `$()` を分解して個別検査 |\n\n### アーキテクチャ: 二重防御システム\n\n```\nツール実行リクエスト\n        |\n Layer 1: settings.json (Claude Code 内部)\n        permissions.allow --> 確認なし許可\n        permissions.deny  --> ブロック\n        | (バグで通過した場合)\n Layer 2: PreToolUse Hook (独立した番犬)\n        bash 正規表現で deny ルールを再チェック\n        複合コマンド (&&, ||, |, $(), <()) も分解して個別検査\n        --> 一致すれば exit 2 で強制ブロック\n```\n\n### 設定レイヤー\n\ncsg は 3 階層の設定ファイルをマージして診断します:\n\n| レイヤー | パス | 用途 |\n|---------|------|------|\n| グローバル | `~/.claude/settings.json` | ユーザー全体の基本設定 |\n| ローカル | `~/.claude/settings.local.json` | マシン固有の上書き（git 管理外） |\n| プロジェクト | `.claude/settings.json` | プロジェクト固有の設定 |\n\n---\n\n### 導入手順\n\n#### 方法 1: 対話型ガイド（推奨）\n\n最もかんたんな方法です。5つのステップを順番にガイドします。\n\n```bash\nnpx claude-settings-guard\n```\n\nウィザードが以下を順に実行します:\n\n```\nStep 1/5: 診断     → 現在の設定の問題を検出\nStep 2/5: 移行     → レガシー構文があれば自動変換\nStep 3/5: 推薦     → テレメトリに基づく設定提案\nStep 4/5: プロファイル → セキュリティレベルを選択\nStep 5/5: セットアップ → deny ルール・フック・スラッシュコマンドを配置\n```\n\n#### 方法 2: ワンライナー（非対話）\n\nすべてデフォルト設定 (balanced プロファイル) で一括適用:\n\n```bash\nnpx claude-settings-guard -y\n```\n\n#### 方法 3: プロファイル指定で初期化\n\n```bash\n# balanced プロファイル（推奨デフォルト）\nnpx claude-settings-guard init --profile balanced\n\n# AutoMode 相当の保護\nnpx claude-settings-guard init --profile smart\n\n# セキュリティ重視\nnpx claude-settings-guard init --profile strict\n\n# 速度重視・最小制限\nnpx claude-settings-guard init --profile minimal\n```\n\n#### 方法 4: グローバルインストール\n\n頻繁に使う場合:\n\n```bash\nnpm install -g claude-settings-guard\ncsg                          # 対話型ガイド\ncsg init --profile strict    # プロファイル指定\n```\n\n#### 導入後に配置されるファイル\n\n```\n~/.claude/\n├── settings.json              ← deny/allow/ask ルールが追加される\n├── CLAUDE.md                  ← Bash 複合コマンドルールが追加される\n├── backups/                   ← 設定変更前の自動バックアップ\n├── hooks/\n│   ├── enforce-permissions.sh ← Layer 2 強制フック\n│   └── session-diagnose.sh    ← 起動時自動診断 (strict のみ)\n└── commands/\n    ├── csg.md                 ← /csg スラッシュコマンド\n    ├── csg-diagnose.md        ← /csg-diagnose\n    └── csg-enforce.md         ← /csg-enforce\n```\n\n> 設定の変更時には `~/.claude/backups/` にタイムスタンプ付きバックアップが自動作成されます。\n\n#### 導入後の確認\n\n```bash\n# 設定に問題がないか確認\ncsg diagnose\n\n# フックスクリプトをプレビュー\ncsg enforce --dry-run\n\n# Claude Code 内でスラッシュコマンドを使用\n# /csg          → 設定サマリー\n# /csg-diagnose → 詳細診断\n# /csg-enforce  → フック更新\n```\n\n---\n\n### プロファイル\n\n4つのプリセットから選択できます。各プロファイルは基本 deny ルール（sudo, su, rm -rf, .env, secrets）を含みます。\n\n全プロファイル共通で、取り消しが困難なコマンド（git push, git reset --hard, npm/pnpm/yarn/bun/cargo publish 等）は `ask` に設定され、実行前に確認を求めます。危険な chmod（777, +s）は deny に設定されます。\n\n#### minimal（速度重視）\n\nほぼ全ツールを自動許可。確認プロンプトを最小化したい人向け。\n\n| 設定 | 内容 |\n|------|------|\n| deny | `Bash(sudo *)`, `Bash(rm -rf /*)`, `Bash(chmod 777 *)`, `Bash(chmod +s *)` |\n| allow | `Read`, `Edit`, `Write`, `Glob`, `Grep` (ベア `Bash` は ask 競合により自動除去、安全なサブコマンドで補償) |\n| ask | `Bash(git push *)`, `Bash(git reset --hard *)`, `Bash(npm publish *)` 等 21 ルール + 高リスクシステムコマンド (`dd`, `osascript`, `dscl`, `diskutil` 等) 8 ルール |\n| フック | enforce-permissions のみ |\n\n#### balanced（推奨デフォルト）\n\n読み取りは自動許可、書き込み・実行は確認。多くのユーザーに適したバランス。\n\n| 設定 | 内容 |\n|------|------|\n| deny | `Bash(sudo *)`, `Bash(rm -rf /*)`, `Read(**/.env)`, `Read(**/secrets/**)` |\n| allow | `Read`, `Glob`, `Grep` |\n| ask | `Bash`, `Edit`, `Write` + 取消困難コマンド 21 ルール |\n| フック | enforce-permissions のみ |\n\n#### smart（AutoMode 相当）\n\nClaude Code の AutoMode（AI 分類器）の判定基準に準拠した静的ルール。ローカル開発は許可し、外部通信・破壊操作・インフラ変更のみ確認を要求。AutoMode は v2.1.111（2026-04-16）以降 Max プランでも利用可能になりましたが、**Pro プランでは引き続き利用不可**です。smart プロファイルは Pro ユーザーや LLM 呼び出しコストを避けたいユーザーに、AutoMode 相当の保護を静的ルールで提供します。\n\n| 設定 | 内容 |\n|------|------|\n| deny | `Bash(sudo *)`, `Bash(eval *)`, `Bash(chmod 777 *)`, `Read(**/.env)`, `Write(**/secrets/**)` 等 |\n| allow | `Read`, `Write`, `Edit`, `Glob`, `Grep` (curl/wget もローカル開発用に許可) |\n| ask | 取消困難コマンド 21 ルール + インフラ系 7 ルール + AutoMode 相当 22 ルール (クラウド操作、プロセス管理、永続化、ポートスキャン等) |\n| フック | enforce-permissions のみ |\n\n#### strict（セキュリティ重視）\n\nネットワークコマンドもブロック。セキュリティ最優先の環境向け。\n\n| 設定 | 内容 |\n|------|------|\n| deny | 上記 + `Bash(curl *)`, `Bash(wget *)`, `Bash(eval *)`, `Bash(base64 *)`, `Write(**/.env)` |\n| allow | `Read`, `Glob`, `Grep` |\n| ask | `Bash`, `Edit`, `Write` + 取消困難コマンド 21 ルール + インフラ系 7 ルール (`ssh`, `kubectl`, `terraform` 等) |\n| フック | enforce-permissions + 起動時自動診断 |\n\n---\n\n### コマンド一覧\n\n| コマンド | 説明 |\n|---------|------|\n| `csg` / `csg setup` | 対話型ガイドセットアップ (デフォルト) |\n| `csg diagnose [--json] [--quiet]` | settings.json を診断し、問題を検出する |\n| `csg migrate [--dry-run]` | レガシー構文をモダン構文に一括変換する |\n| `csg recommend [--profile NAME] [--dry-run] [-y\\|--yes]` | インストール済みツールをAI分析し、権限設定を推薦・適用する |\n| `csg enforce [--dry-run]` | deny ルールの強制フック (PreToolUse) を生成・登録する |\n| `csg init [--profile NAME] [--force]` | 初回セットアップ: スラッシュコマンド・プロファイル・フックを配置 |\n| `csg mcp` | MCP サーバーとして起動 (Claude Code 統合) |\n\n#### 終了コード\n\n| コード | 条件 |\n|--------|------|\n| `0` | 問題なし、または INFO レベルのみ |\n| `1` | CRITICAL または WARNING レベルの問題が検出された（`--json` 使用時） |\n\nCI/CD で設定品質をゲートに利用できます:\n\n```bash\n# CI パイプラインで設定の健全性をチェック\nnpx claude-settings-guard diagnose --json --quiet || echo \"Settings issues detected\"\n```\n\n### 診断で検出する問題\n\n| コード | 重要度 | 内容 |\n|--------|--------|------|\n| `LEGACY_SYNTAX` | CRITICAL | コロン構文 `Tool(arg:*)` の使用 |\n| `BARE_TOOL_OVERRIDE` | CRITICAL | ベアツール名（例: `Bash`）が ask パターンを無効化 |\n| `STRUCTURE_ISSUE` | WARNING | トップレベルの `deny`/`allowedTools` |\n| `INVALID_TOOL` | WARNING | 未知のツール名 |\n| `CONFLICT` | WARNING | allow と deny の競合 |\n| `ALLOW_ASK_CONFLICT` | WARNING | allow と ask の競合（allow が優先され ask が無効化） |\n| `ALLOW_DENY_CONFLICT` | WARNING | allow と deny の重複（冗長、deny が優先） |\n| `CROSS_TOOL_BYPASS` | WARNING/INFO | Bash 経由のファイル deny バイパス（Layer 2 導入時は INFO に降格） |\n| `PREFIX_BYPASS_RISK` | WARNING/INFO | プレフィックスコマンドによる deny 回避リスク |\n| `MISSING_PAIRED_DENY` | WARNING | Read deny はあるが Write/Edit deny が未設定 |\n| `INVALID_PATTERN` | WARNING | パターン構文エラー |\n| `PIPE_VULNERABLE` | INFO | パイプによるバイパスの可能性 → Layer 2 で対処 |\n\n### 競合自動除去\n\n`csg setup` / `csg init` でプロファイル適用時、allow ルールが deny や ask と競合している場合、自動的に allow から除去します。\n\n| 競合パターン | 問題 | csg の対処 |\n|---|---|---|\n| ベア `Bash` + `Bash(...)` ask | **全 Bash ask ルールが無効化される** | ベアツール名を allow から自動除去、安全なサブコマンドで補償 |\n| allow + deny に同じルール | 冗長（deny が勝つが将来変更リスク） | allow から自動除去 |\n| allow + ask に同じルール | **ask が無効化される**（allow が優先） | allow から自動除去 |\n| 広い allow が特定の ask/deny をオーバーライド | **`Bash(npm *)` が `Bash(npm publish *)` を無効化** | プレフィックスマッチで検出し allow から自動除去 |\n\n```\n例1: ベア Bash が allow にあり、ask に Bash(git push *) がある\n  → allow からベア Bash を自動除去\n  → 安全なコマンド (git commit, npm install 等) は個別パターンで補償\n  → git push 時に Claude が確認を求めるようになる\n\n例2: Bash(git push *) が allow と ask の両方にある\n  → allow から自動除去し、ask のみに残す\n\n例3: Bash(npm *) が allow にあり、ask に Bash(npm publish *) がある\n  → 広い Bash(npm *) を allow から自動除去\n  → npm install, npm run 等の安全なサブコマンドは個別に allow に追加\n```\n\n`csg diagnose` でも `BARE_TOOL_OVERRIDE` / `ALLOW_ASK_CONFLICT` / `ALLOW_DENY_CONFLICT` として検出・警告します。\n\n### AI ツールスキャン推薦\n\n`csg recommend` はインストール済みの CLI ツールを自動検出し、Claude AI で安全性を分類して allow/ask/deny を推薦します。\n\n```bash\n# プレビュー（変更なし）\ncsg recommend --profile smart --dry-run\n\n# 自動適用\ncsg recommend --profile minimal --yes\n\n# プロファイル省略時は現在の設定から自動検出\ncsg recommend --dry-run\n```\n\n#### 動作フロー\n\n```\n1. PATH 上のユーザーインストール済みバイナリをスキャン\n2. CSG 既存ルールでカバー済みのツールを除外\n3. 未カバーツールを Claude AI に送信し分類:\n   - skip: 開発無関係（メディアコーデック、暗号テスト等）→ 無視\n   - safe: ローカル開発ツール → allow\n   - needs-confirmation: 外部通信・DB操作等 → ask\n   - dangerous: 特権昇格・破壊操作 → deny\n4. プロファイルに応じて allow/ask/deny にマッピング\n5. サブコマンドレベルの粒度で推薦\n```\n\n#### プロファイル別マッピング\n\n| AI 判定 | minimal | balanced | smart | strict |\n|---------|---------|----------|-------|--------|\n| safe | allow | allow | allow | allow |\n| needs-confirmation | allow | ask | ask | ask |\n| dangerous | ask | ask | deny | deny |\n\n#### サブコマンドレベルの粒度\n\n同一ツールでもサブコマンドごとにリスクが異なる場合、AI が自動で分けます:\n\n```\nbrew list *     → [+allow]  パッケージ一覧（読み取りのみ）\nbrew install *  → [+ask]    ネットワークからインストール\nbrew services * → [+ask]    バックグラウンドサービス管理\n```\n\n#### オプション\n\n| オプション | 説明 |\n|-----------|------|\n| `--profile <name>` | 分類基準を指定 (minimal, balanced, strict, smart) |\n| `--dry-run` | 推薦を表示するが適用しない |\n| `-y, --yes` | 確認なしで自動適用 |\n\n適用時に deny ルールが追加された場合、Layer 2 強制フックが自動的に再生成されます。\n\n> **注意**: AI 分類には Claude Code CLI が必要です。ネットワーク接続が必要で、API 利用料が発生します。\n\n#### 標準 skill `/less-permission-prompts` との使い分け\n\nClaude Code v2.1.111（2026-04-16）で、セッション transcript から頻出の read-only Bash/MCP 呼び出しを検出して allowlist を提案する標準 skill `/less-permission-prompts` が追加されました。csg の `recommend` とは **入力信号と出力が異なる補完関係** です。\n\n| 観点 | `csg recommend` | `/less-permission-prompts` |\n|------|-----------------|----------------------------|\n| 入力 | PATH バイナリスキャン ＋ OTel telemetry | セッション transcript |\n| タイミング | 事前（未使用ツールも対象） | 事後（実際に使った履歴ベース） |\n| 出力 | allow / ask / **deny** 3種類 | allow のみ |\n| 分類基準 | 4 プロファイル × AI リスク分類（safe / needs-confirmation / dangerous / skip） | read-only 限定 |\n| 副作用 | settings.json 書き換え ＋ **Layer 2 フック再生成** | settings.json のみ |\n\n**推奨併用フロー**: `csg recommend` で初期設定＋ deny を固め、運用中に残る許可プロンプトは `/less-permission-prompts` で削る。transcript にしか現れないローカル固有コマンドを拾える一方、csg の核心（deny 強制、複合コマンド再検査、プロファイル保護）は引き続き csg が担います。\n\n### MCP サーバー統合\n\nClaude Code から直接設定を確認・改善できます。\n\n```json\n// ~/.claude.json に追加\n{\n  \"mcpServers\": {\n    \"csg\": {\n      \"command\": \"npx\",\n      \"args\": [\"claude-settings-guard\", \"mcp\"]\n    }\n  }\n}\n```\n\n利用可能な MCP ツール:\n\n| ツール | 引数 | 説明 |\n|--------|------|------|\n| `csg_diagnose` | なし | 設定を診断して問題を返す |\n| `csg_recommend` | `profile?` | プロファイルに基づく改善提案 |\n| `csg_enforce` | `dryRun?` | Layer 2 フックを生成・更新 (dry-run 対応) |\n| `csg_setup` | `profile?` | プロファイル適用ガイド |\n\n### 開発\n\n```bash\ngit clone https://github.com/hideosugimoto/claude-settings-guard.git\ncd claude-settings-guard\nnpm install\nnpm run build          # ビルド\nnpm test               # テスト実行 (54 files, 1045 tests)\nnpx tsx src/index.ts   # ローカル実行\n```\n\n#### プロジェクト構成\n\n```\nsrc/\n├── index.ts              # CLI エントリポイント\n├── commands/             # 各サブコマンドの実装\n│   ├── setup.ts          # 5ステップ対話型ウィザード\n│   ├── diagnose.ts       # 診断\n│   ├── migrate.ts        # マイグレーション\n│   ├── recommend.ts      # テレメトリ推薦\n│   ├── enforce.ts        # フック生成\n│   ├── init.ts           # 初期化\n│   └── deploy-slash.ts   # スラッシュコマンド配置\n├── core/                 # コアロジック\n│   ├── settings-reader.ts    # 3層設定読み込み・マージ\n│   ├── settings-writer.ts    # 設定書き込み（自動バックアップ付き）\n│   ├── pattern-validator.ts  # パターン検証\n│   ├── pattern-migrator.ts   # 構文・構造マイグレーション\n│   ├── hook-generator.ts     # 強制フック生成\n│   ├── hook-regenerator.ts   # フック再生成の共通ロジック\n│   ├── hook-script-builder.ts # シェルスクリプト構築\n│   ├── pattern-grouper.ts    # コマンドプレフィックスのグルーピング\n│   ├── recommendation-applier.ts # 推薦の自動適用\n│   ├── claude-md-updater.ts  # CLAUDE.md Bash ルール管理\n│   ├── session-hook.ts       # セッション起動時フック\n│   ├── telemetry-analyzer.ts # テレメトリ分析\n│   ├── ai-classifier.ts     # AI ツール分類 (Claude CLI 連携)\n│   └── mcp-protocol.ts      # JSON-RPC 2.0 フレーミング\n├── mcp-server.ts         # MCP サーバー\n├── profiles/             # プロファイル定義\n├── types.ts              # Zod スキーマ・型定義\n└── constants.ts          # 定数・既知ツール一覧\n```\n\n---\n\n## English\n\n> **Disclaimer**: This is an unofficial community tool. It is not affiliated with, endorsed by, or sponsored by Anthropic, PBC. \"Claude\" is a trademark of Anthropic, PBC.\n\nA CLI tool to diagnose, fix, and reinforce Claude Code's `settings.json` permission configuration.\n\n### Quick Start\n\n```bash\nnpx claude-settings-guard\n```\n\nThis single command launches an interactive guide that automatically:\n\n1. Diagnoses settings (detects legacy syntax, structural issues, conflicts)\n2. Migrates patterns (batch conversion from legacy to modern syntax)\n3. Analyzes telemetry (recommendations based on usage patterns)\n4. Selects a profile (minimal / balanced / strict / smart)\n5. Sets up dual-layer defense (deny rules + enforcement hooks)\n\nFor CI or automation, use the `-y` flag for non-interactive mode:\n\n```bash\nnpx claude-settings-guard -y\n```\n\n### Problems Solved\n\n| Symptom | Root Cause | csg Solution |\n|---------|-----------|--------------|\n| Tools in `allowedTools` still prompt for permission | Legacy colon syntax `Bash(npm:*)` | `csg migrate` auto-converts to `Bash(npm *)` |\n| `deny` rules don't block as expected | Pattern matching bugs in Claude Code | Layer 2 hook provides dual-layer defense |\n| Too many manual \"Yes\" confirmations | Frequently used tools not in allow list | `csg recommend` provides telemetry-based suggestions |\n| Outdated settings structure | Need migration to `permissions.*` | `csg migrate` handles structure + syntax |\n| Risk of `.env` or secret files being read | Insufficient deny rules | Profiles apply recommended deny rules in bulk |\n| `curl ... \\| sh` bypasses deny rules | Compound commands not analyzed | Layer 2 hook decomposes `&&`, `\\|\\|`, `\\|`, `$()` and checks each part |\n\n### Architecture: Dual-Layer Defense\n\n```\nTool execution request\n        |\n Layer 1: settings.json (Claude Code internals)\n        permissions.allow --> auto-approve\n        permissions.deny  --> block\n        | (if bug lets it through)\n Layer 2: PreToolUse Hook (independent watchdog)\n        Re-evaluates deny rules with bash regex\n        Decomposes compound commands (&&, ||, |, $(), <())\n        Checks each part independently against deny rules\n        --> exit 2 to force-block on match\n```\n\n### Settings Layers\n\ncsg reads and merges settings from 3 layers:\n\n| Layer | Path | Purpose |\n|-------|------|---------|\n| Global | `~/.claude/settings.json` | User-wide base settings |\n| Local | `~/.claude/settings.local.json` | Machine-specific overrides (not in git) |\n| Project | `.claude/settings.json` | Project-specific settings |\n\n---\n\n### Installation\n\n#### Method 1: Interactive Guide (Recommended)\n\nThe simplest approach. Walks you through 5 steps.\n\n```bash\nnpx claude-settings-guard\n```\n\nThe wizard runs these steps in order:\n\n```\nStep 1/5: Diagnose  → Detect issues in current settings\nStep 2/5: Migrate   → Auto-convert legacy syntax if found\nStep 3/5: Recommend → Suggest settings based on telemetry\nStep 4/5: Profile   → Choose security level\nStep 5/5: Setup     → Deploy deny rules, hooks, and slash commands\n```\n\n#### Method 2: One-Liner (Non-Interactive)\n\nApply all defaults (balanced profile) in one shot:\n\n```bash\nnpx claude-settings-guard -y\n```\n\n#### Method 3: Initialize with a Specific Profile\n\n```bash\n# Balanced profile (recommended default)\nnpx claude-settings-guard init --profile balanced\n\n# AutoMode-equivalent protection\nnpx claude-settings-guard init --profile smart\n\n# Security-focused\nnpx claude-settings-guard init --profile strict\n\n# Speed-focused, minimal restrictions\nnpx claude-settings-guard init --profile minimal\n```\n\n#### Method 4: Global Install\n\nFor frequent use:\n\n```bash\nnpm install -g claude-settings-guard\ncsg                          # Interactive guide\ncsg init --profile strict    # Profile-based init\n```\n\n#### Files Deployed After Setup\n\n```\n~/.claude/\n├── settings.json              ← deny/allow/ask rules added\n├── CLAUDE.md                  ← Bash compound command rules added\n├── backups/                   ← Auto-backups before changes\n├── hooks/\n│   ├── enforce-permissions.sh ← Layer 2 enforcement hook\n│   └── session-diagnose.sh    ← Startup auto-diagnostics (strict only)\n└── commands/\n    ├── csg.md                 ← /csg slash command\n    ├── csg-diagnose.md        ← /csg-diagnose\n    └── csg-enforce.md         ← /csg-enforce\n```\n\n> Settings changes automatically create timestamped backups in `~/.claude/backups/`.\n\n#### Post-Installation Verification\n\n```bash\n# Check for configuration issues\ncsg diagnose\n\n# Preview hook script\ncsg enforce --dry-run\n\n# Use slash commands in Claude Code\n# /csg          → Settings summary\n# /csg-diagnose → Detailed diagnostics\n# /csg-enforce  → Update enforcement hook\n```\n\n---\n\n### Profiles\n\nChoose from 4 presets. Each profile includes foundational deny rules (sudo, su, rm -rf, .env, secrets).\n\nAll profiles include `ask` rules for hard-to-reverse commands (git push, git reset --hard, npm/pnpm/yarn/bun/cargo publish, etc.) that require confirmation before execution. Dangerous chmod operations (777, +s) are denied.\n\n#### minimal (Speed-Focused)\n\nAuto-allows most tools. For users who want minimal confirmation prompts.\n\n| Setting | Content |\n|---------|---------|\n| deny | `Bash(sudo *)`, `Bash(rm -rf /*)`, `Bash(chmod 777 *)`, `Bash(chmod +s *)` |\n| allow | `Read`, `Edit`, `Write`, `Glob`, `Grep` (bare `Bash` auto-removed due to ask conflict, compensated with safe subcommands) |\n| ask | `Bash(git push *)`, `Bash(git reset --hard *)`, `Bash(npm publish *)`, etc. (21 rules) + high-risk system commands (`dd`, `osascript`, `dscl`, `diskutil`, etc.) (8 rules) |\n| hooks | enforce-permissions only |\n\n#### balanced (Recommended Default)\n\nAuto-allows reads, requires confirmation for writes/execution.\n\n| Setting | Content |\n|---------|---------|\n| deny | `Bash(sudo *)`, `Bash(rm -rf /*)`, `Read(**/.env)`, `Read(**/secrets/**)` |\n| allow | `Read`, `Glob`, `Grep` |\n| ask | `Bash`, `Edit`, `Write` + hard-to-reverse commands (21 rules) |\n| hooks | enforce-permissions only |\n\n#### smart (AutoMode-Equivalent)\n\nStatic rules based on Claude Code's AutoMode (AI classifier) criteria. Allows local development freely while requiring confirmation for external communication, destructive operations, and infrastructure changes. As of v2.1.111 (2026-04-16), AutoMode is now available on the Max plan, but **still unavailable on the Pro plan**. The `smart` profile provides AutoMode-equivalent protection via static rules — useful for Pro users and anyone who wants to avoid the per-call LLM classifier cost.\n\n| Setting | Content |\n|---------|---------|\n| deny | `Bash(sudo *)`, `Bash(eval *)`, `Bash(chmod 777 *)`, `Read(**/.env)`, `Write(**/secrets/**)`, etc. |\n| allow | `Read`, `Write`, `Edit`, `Glob`, `Grep` (curl/wget allowed for local dev) |\n| ask | Hard-to-reverse (21 rules) + infra (7 rules) + AutoMode-equivalent (22 rules: cloud ops, process mgmt, persistence, port scanning, etc.) |\n| hooks | enforce-permissions only |\n\n#### strict (Security-Focused)\n\nBlocks network commands. For security-critical environments.\n\n| Setting | Content |\n|---------|---------|\n| deny | All above + `Bash(curl *)`, `Bash(wget *)`, `Bash(eval *)`, `Bash(base64 *)`, `Write(**/.env)` |\n| allow | `Read`, `Glob`, `Grep` |\n| ask | `Bash`, `Edit`, `Write` + hard-to-reverse (21 rules) + infra commands (7 rules: `ssh`, `kubectl`, `terraform`, etc.) |\n| hooks | enforce-permissions + startup auto-diagnostics |\n\n---\n\n### Commands\n\n| Command | Description |\n|---------|-------------|\n| `csg` / `csg setup` | Interactive guided setup (default) |\n| `csg diagnose [--json] [--quiet]` | Audit settings.json for issues |\n| `csg migrate [--dry-run]` | Batch-convert legacy syntax to modern format |\n| `csg recommend [--profile NAME] [--dry-run] [-y\\|--yes]` | AI-scan installed tools and recommend allow/ask/deny rules |\n| `csg enforce [--dry-run]` | Generate enforcement hook from deny rules |\n| `csg init [--profile NAME] [--force]` | First-time setup: deploy slash commands, profiles, and hooks |\n| `csg mcp` | Start as MCP server for Claude Code integration |\n\n#### Exit Codes\n\n| Code | Condition |\n|------|-----------|\n| `0` | No issues, or INFO-level issues only |\n| `1` | CRITICAL or WARNING issues detected (with `--json`) |\n\nUse in CI/CD to gate settings quality:\n\n```bash\n# Check settings health in CI pipeline\nnpx claude-settings-guard diagnose --json --quiet || echo \"Settings issues detected\"\n```\n\n### Diagnostic Issue Codes\n\n| Code | Severity | Description |\n|------|----------|-------------|\n| `LEGACY_SYNTAX` | CRITICAL | Colon syntax `Tool(arg:*)` detected |\n| `BARE_TOOL_OVERRIDE` | CRITICAL | Bare tool name (e.g. `Bash`) overrides ask patterns |\n| `STRUCTURE_ISSUE` | WARNING | Top-level `deny`/`allowedTools` found |\n| `INVALID_TOOL` | WARNING | Unknown tool name |\n| `CONFLICT` | WARNING | Pattern in both allow and deny |\n| `ALLOW_ASK_CONFLICT` | WARNING | Pattern in both allow and ask (allow overrides, ask ignored) |\n| `ALLOW_DENY_CONFLICT` | WARNING | Pattern in both allow and deny (redundant, deny wins) |\n| `CROSS_TOOL_BYPASS` | WARNING/INFO | File deny bypass via Bash (downgraded to INFO when Layer 2 installed) |\n| `PREFIX_BYPASS_RISK` | WARNING/INFO | Deny evasion via prefix commands |\n| `MISSING_PAIRED_DENY` | WARNING | Read deny exists but Write/Edit deny missing |\n| `INVALID_PATTERN` | WARNING | Pattern syntax error |\n| `PIPE_VULNERABLE` | INFO | Pipe bypass risk → addressed by Layer 2 |\n\n### Conflict Auto-Resolution\n\nWhen applying a profile via `csg setup` / `csg init`, allow rules that conflict with deny or ask rules are automatically removed.\n\n| Conflict | Problem | csg Action |\n|----------|---------|------------|\n| Bare `Bash` + `Bash(...)` ask | **All Bash ask rules silently ignored** | Auto-remove bare tool from allow, compensate with safe subcommands |\n| allow + deny overlap | Redundant (deny wins, but risky if behavior changes) | Auto-remove from allow |\n| allow + ask overlap | **ask is silently ignored** (allow takes priority) | Auto-remove from allow |\n| Broad allow overrides specific ask/deny | **`Bash(npm *)` overrides `Bash(npm publish *)`** | Prefix-match detection, auto-remove from allow |\n\n```\nExample 1: Bare \"Bash\" in allow with Bash(git push *) in ask\n  → Bare \"Bash\" auto-removed from allow\n  → Safe commands (git commit, npm install, etc.) compensated with individual patterns\n  → Claude now asks for confirmation before git push\n\nExample 2: Bash(git push *) in both allow and ask\n  → Auto-removed from allow, kept in ask\n\nExample 3: Bash(npm *) in allow with Bash(npm publish *) in ask\n  → Broad Bash(npm *) auto-removed from allow\n  → Safe subcommands (npm install, npm run, etc.) individually added to allow\n```\n\n`csg diagnose` detects these as `BARE_TOOL_OVERRIDE` / `ALLOW_ASK_CONFLICT` / `ALLOW_DENY_CONFLICT`.\n\n### AI Tool Scan Recommendations\n\n`csg recommend` auto-detects installed CLI tools and uses Claude AI to classify their safety, then recommends allow/ask/deny rules.\n\n```bash\n# Preview only (no changes)\ncsg recommend --profile smart --dry-run\n\n# Auto-apply\ncsg recommend --profile minimal --yes\n\n# Auto-detect profile from current settings\ncsg recommend --dry-run\n```\n\n#### How It Works\n\n```\n1. Scan PATH for user-installed binaries\n2. Filter out tools already covered by CSG rules\n3. Send uncovered tools to Claude AI for classification:\n   - skip: Not dev-related (media codecs, crypto tests, etc.) → ignored\n   - safe: Local dev tools → allow\n   - needs-confirmation: Network ops, DB clients, etc. → ask\n   - dangerous: Privilege escalation, destruction → deny\n4. Map to allow/ask/deny based on active profile\n5. Recommend at subcommand-level granularity\n```\n\n#### Profile Mapping\n\n| AI Classification | minimal | balanced | smart | strict |\n|-------------------|---------|----------|-------|--------|\n| safe | allow | allow | allow | allow |\n| needs-confirmation | allow | ask | ask | ask |\n| dangerous | ask | ask | deny | deny |\n\n#### Subcommand Granularity\n\nWhen a tool has mixed-risk subcommands, AI classifies each separately:\n\n```\nbrew list *     → [+allow]  List packages (read-only)\nbrew install *  → [+ask]    Install from network\nbrew services * → [+ask]    Manage background services\n```\n\n#### Options\n\n| Option | Description |\n|--------|-------------|\n| `--profile <name>` | Classification profile (minimal, balanced, strict, smart) |\n| `--dry-run` | Show recommendations without applying |\n| `-y, --yes` | Auto-apply without confirmation |\n\nWhen deny rules are added, the Layer 2 enforcement hook is automatically regenerated.\n\n> **Note**: AI classification requires Claude Code CLI. Requires network access and incurs API usage costs.\n\n#### Relationship with the built-in `/less-permission-prompts` skill\n\nClaude Code v2.1.111 (2026-04-16) introduced a built-in `/less-permission-prompts` skill that scans session transcripts for common read-only Bash/MCP tool calls and proposes a prioritized allowlist. It is **complementary to `csg recommend`**, not a replacement — the two use different input signals and produce different outputs.\n\n| Dimension | `csg recommend` | `/less-permission-prompts` |\n|-----------|-----------------|----------------------------|\n| Input | PATH binary scan + OTel telemetry | Session transcripts |\n| Timing | Proactive (covers unused tools) | Reactive (based on actual usage) |\n| Output | allow / ask / **deny** | allow only |\n| Classification | 4 profiles × AI risk (safe / needs-confirmation / dangerous / skip) | read-only focus |\n| Side effects | Writes settings.json + **regenerates Layer 2 hook** | Writes settings.json only |\n\n**Recommended combined flow**: Use `csg recommend` for initial setup and deny enforcement, then run `/less-permission-prompts` periodically to trim remaining prompts from your actual session history. The skill captures project-local commands that don't show up in a PATH scan, while csg's core value (deny enforcement, compound-command re-checking, profile-based safety) stays with csg.\n\n### MCP Server Integration\n\nLet Claude directly check and improve settings.\n\n```json\n// Add to ~/.claude.json\n{\n  \"mcpServers\": {\n    \"csg\": {\n      \"command\": \"npx\",\n      \"args\": [\"claude-settings-guard\", \"mcp\"]\n    }\n  }\n}\n```\n\nAvailable MCP tools:\n\n| Tool | Arguments | Description |\n|------|-----------|-------------|\n| `csg_diagnose` | None | Diagnose settings and return issues |\n| `csg_recommend` | `profile?` | Suggest improvements based on profile |\n| `csg_enforce` | `dryRun?` | Generate/update Layer 2 hook (dry-run supported) |\n| `csg_setup` | `profile?` | Profile application guide |\n\n### Development\n\n```bash\ngit clone https://github.com/hideosugimoto/claude-settings-guard.git\ncd claude-settings-guard\nnpm install\nnpm run build          # Build\nnpm test               # Run tests (54 files, 1045 tests)\nnpx tsx src/index.ts   # Run locally\n```\n\n#### Project Structure\n\n```\nsrc/\n├── index.ts              # CLI entry point\n├── commands/             # Subcommand implementations\n│   ├── setup.ts          # 5-step interactive wizard\n│   ├── diagnose.ts       # Diagnostics\n│   ├── migrate.ts        # Migration\n│   ├── recommend.ts      # Telemetry recommendations\n│   ├── enforce.ts        # Hook generation\n│   ├── init.ts           # Initialization\n│   └── deploy-slash.ts   # Slash command deployment\n├── core/                 # Core logic\n│   ├── settings-reader.ts    # 3-layer settings loading & merging\n│   ├── settings-writer.ts    # Settings write (with auto-backup)\n│   ├── pattern-validator.ts  # Pattern validation\n│   ├── pattern-migrator.ts   # Syntax & structure migration\n│   ├── hook-generator.ts     # Enforcement hook generation\n│   ├── hook-regenerator.ts   # Shared hook regeneration logic\n│   ├── hook-script-builder.ts # Shell script building\n│   ├── pattern-grouper.ts    # Command prefix grouping\n│   ├── recommendation-applier.ts # Auto-apply recommendations\n│   ├── claude-md-updater.ts  # CLAUDE.md Bash rules management\n│   ├── session-hook.ts       # Session startup hook\n│   ├── telemetry-analyzer.ts # Telemetry analysis\n│   ├── ai-classifier.ts     # AI tool classification (Claude CLI integration)\n│   └── mcp-protocol.ts      # JSON-RPC 2.0 framing\n├── mcp-server.ts         # MCP server\n├── profiles/             # Profile definitions\n├── types.ts              # Zod schemas & type definitions\n└── constants.ts          # Constants & known tools list\n```\n\n---\n\n## Disclaimer\n\nThis is an unofficial community tool. It is not affiliated with, endorsed by, or sponsored by Anthropic, PBC. \"Claude\" is a trademark of Anthropic, PBC. Use of the name \"Claude\" in this project is solely for descriptive purposes to indicate compatibility with Claude Code.\n\n本ツールはコミュニティによる非公式ツールです。Anthropic, PBC とは一切関係がなく、公認・推奨・後援を受けたものではありません。\"Claude\" は Anthropic, PBC の商標です。本プロジェクトにおける \"Claude\" の使用は、Claude Code との互換性を示す説明目的に限ります。\n\n## License\n\nMIT\n","readmeFilename":"README.md"}