{"versions":{"1.0.0":{"name":"block-no-verify","version":"1.0.0","description":"CLI tool to block --no-verify flag in git commands. Prevents AI agents from bypassing git hooks.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"block-no-verify":"dist/cli.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"keywords":["git","no-verify","hooks","cli","security","ai-safety","claude-code","agent-governance"],"author":"","license":"MIT","engines":{"node":">=20.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/tupe12334/block-no-verify.git"},"bugs":{"url":"https://github.com/tupe12334/block-no-verify/issues"},"homepage":"https://github.com/tupe12334/block-no-verify#readme","devDependencies":{"@commitlint/cli":"^20.3.1","@commitlint/config-conventional":"^20.3.1","@cspell/dict-he":"^4.0.5","@types/node":"^25.0.3","@vitest/coverage-v8":"^4.0.16","cspell":"^9.4.0","eslint":"^9.39.2","eslint-config-agent":"^1.9.0","eslint-config-publishable-package-json":"^1.0.0","eslint-import-resolver-typescript":"^4.4.4","husky":"^9.1.7","knip":"^5.80.2","lint-staged":"^16.2.7","prettier":"^3.7.4","release-it":"^19.2.3","typescript":"^5.9.3","vitest":"^4.0.16"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest","test:watch":"vitest --watch","test:coverage":"vitest --coverage","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","spell":"cspell lint '**/*.{ts,js,md,json}' --gitignore","spell:check":"cspell lint '**/*.{ts,js,md,json}' --gitignore","knip":"knip","release":"release-it"},"_id":"block-no-verify@1.0.0","_integrity":"sha512-aVxHsfXyWZ4k7NMHqYaRI+4PLrVLPV1DakqE2qqKHZ0JQShPwCNSls3akUrdczYdLEG8LJjaBwAAEwYCJqnZKg==","_resolved":"/tmp/806aeb4e995389fede497aa7c01498d2/block-no-verify-1.0.0.tgz","_from":"file:block-no-verify-1.0.0.tgz","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-aVxHsfXyWZ4k7NMHqYaRI+4PLrVLPV1DakqE2qqKHZ0JQShPwCNSls3akUrdczYdLEG8LJjaBwAAEwYCJqnZKg==","shasum":"7781503aa5c237ca41f18686b8f27161637277be","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/block-no-verify/-/block-no-verify-1.0.0.tgz","fileCount":39,"unpackedSize":22862,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCiGP+i2PwEOwnh9Gdq5Vzm5q0b+Dzegrb2rP7h+0vt8AIgc2T1j5I/0EBBu0HhrYc7efoZF1yhE4P6tmGxrV1Xzqs="}],"size":7888},"_npmUser":{"name":"anonymous","email":"ofek.gabay.he@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ofek.gabay.he@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/block-no-verify_1.0.0_1767997291954_0.05077083351031941"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-09T22:21:32.084Z","publish_time":1767997292084,"_source_registry_name":"default","contributors":[]},"1.1.0":{"name":"block-no-verify","version":"1.1.0","description":"CLI tool to block --no-verify flag in git commands. Prevents AI agents from bypassing git hooks.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"block-no-verify":"dist/cli.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"keywords":["git","no-verify","hooks","cli","security","ai-safety","claude-code","agent-governance"],"author":"","license":"MIT","engines":{"node":">=20.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/tupe12334/block-no-verify.git"},"bugs":{"url":"https://github.com/tupe12334/block-no-verify/issues"},"homepage":"https://github.com/tupe12334/block-no-verify#readme","devDependencies":{"@commitlint/cli":"^20.3.1","@commitlint/config-conventional":"^20.3.1","@cspell/dict-he":"^4.0.5","@types/node":"^25.0.3","@vitest/coverage-v8":"^4.0.16","cspell":"^9.4.0","eslint":"^9.39.2","eslint-config-agent":"^1.9.0","eslint-config-publishable-package-json":"^1.0.0","eslint-import-resolver-typescript":"^4.4.4","husky":"^9.1.7","knip":"^5.80.2","lint-staged":"^16.2.7","prettier":"^3.7.4","release-it":"^19.2.3","typescript":"^5.9.3","vitest":"^4.0.16"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest","test:watch":"vitest --watch","test:coverage":"vitest --coverage","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","spell":"cspell lint '**/*.{ts,js,md,json}' --gitignore","spell:check":"cspell lint '**/*.{ts,js,md,json}' --gitignore","knip":"knip","release":"release-it"},"_id":"block-no-verify@1.1.0","_integrity":"sha512-B93Oz+GCmqKn6zFM4fgPEr2z4hu3Qn7wmkzm3b3qTuArP+4d+3YAZNVtbwHp+iU3eZQfwfbmRPTIrFAsvTK4xA==","_resolved":"/tmp/797943ecc109362bbc816cc43ece0764/block-no-verify-1.1.0.tgz","_from":"file:block-no-verify-1.1.0.tgz","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-B93Oz+GCmqKn6zFM4fgPEr2z4hu3Qn7wmkzm3b3qTuArP+4d+3YAZNVtbwHp+iU3eZQfwfbmRPTIrFAsvTK4xA==","shasum":"682e063bc23009eb69966e498805ece519a612d6","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/block-no-verify/-/block-no-verify-1.1.0.tgz","fileCount":63,"unpackedSize":47417,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAEiTYC7Lo8rfxOc0yoUD1Bv4I6qmHN9SMj3EyfrlOddAiACLqew5XwBqZXrUjtwhW82LNyNB78sYDB1jrldy/HMPg=="}],"size":13936},"_npmUser":{"name":"anonymous","email":"ofek.gabay.he@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ofek.gabay.he@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/block-no-verify_1.1.0_1768001363268_0.3789374962342855"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-09T23:29:23.419Z","publish_time":1768001363419,"_source_registry_name":"default","contributors":[]},"1.1.1":{"name":"block-no-verify","version":"1.1.1","description":"CLI tool to block --no-verify flag in git commands. Prevents AI agents from bypassing git hooks.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"block-no-verify":"dist/cli.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"keywords":["git","no-verify","hooks","cli","security","ai-safety","claude-code","agent-governance"],"author":"","license":"MIT","engines":{"node":">=20.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/tupe12334/block-no-verify.git"},"bugs":{"url":"https://github.com/tupe12334/block-no-verify/issues"},"homepage":"https://github.com/tupe12334/block-no-verify#readme","devDependencies":{"@commitlint/cli":"^20.3.1","@commitlint/config-conventional":"^20.3.1","@cspell/dict-he":"^4.0.5","@types/node":"^25.0.3","@vitest/coverage-v8":"^4.0.16","cspell":"^9.4.0","eslint":"^9.39.2","eslint-config-agent":"^1.9.3","eslint-config-publishable-package-json":"^1.0.0","eslint-import-resolver-typescript":"^4.4.4","husky":"^9.1.7","knip":"^5.80.2","lint-staged":"^16.2.7","prettier":"^3.7.4","release-it":"^19.2.3","typescript":"^5.9.3","vitest":"^4.0.16"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest","test:watch":"vitest --watch","test:coverage":"vitest --coverage","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","spell":"cspell lint '**/*.{ts,js,md,json}' --gitignore","spell:check":"cspell lint '**/*.{ts,js,md,json}' --gitignore","knip":"knip","release":"release-it"},"_id":"block-no-verify@1.1.1","_integrity":"sha512-5DOxv0kMKNxBMf/Jke5Rzm06iCv1EOLc7hR00u6iiFVgGajmMI1+dd9wT1Xdwed/4hNUtArNt3JYxrbfLurPJA==","_resolved":"/tmp/fa06843306f49df275356be35e79b7b8/block-no-verify-1.1.1.tgz","_from":"file:block-no-verify-1.1.1.tgz","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-5DOxv0kMKNxBMf/Jke5Rzm06iCv1EOLc7hR00u6iiFVgGajmMI1+dd9wT1Xdwed/4hNUtArNt3JYxrbfLurPJA==","shasum":"5b73409999ece7166ba89c1d8b45c1e32e811cee","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/block-no-verify/-/block-no-verify-1.1.1.tgz","fileCount":67,"unpackedSize":54991,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCAB7QXJXzOoH7WOkUl1+SGYCTc9yLgL0kFO3cE83aoyQIhAPs0smgWyhqDHF1EcQ3aE6nB/Qrjwg5RFX1kU5ueAdc6"}],"size":15555},"_npmUser":{"name":"anonymous","email":"ofek.gabay.he@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ofek.gabay.he@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/block-no-verify_1.1.1_1768056240807_0.4980638549613865"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-10T14:44:00.977Z","publish_time":1768056240977,"_source_registry_name":"default","contributors":[]},"1.1.2":{"name":"block-no-verify","version":"1.1.2","description":"CLI tool to block --no-verify flag in git commands. Prevents AI agents from bypassing git hooks.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"block-no-verify":"dist/cli.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"keywords":["git","no-verify","hooks","cli","security","ai-safety","claude-code","agent-governance"],"author":"","license":"MIT","engines":{"node":">=20.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/tupe12334/block-no-verify.git"},"bugs":{"url":"https://github.com/tupe12334/block-no-verify/issues"},"homepage":"https://github.com/tupe12334/block-no-verify#readme","devDependencies":{"@commitlint/cli":"^20.3.1","@commitlint/config-conventional":"^20.3.1","@cspell/dict-he":"^4.0.5","@types/node":"^25.0.3","@vitest/coverage-v8":"^4.0.16","cspell":"^9.4.0","eslint":"^9.39.2","eslint-config-agent":"^1.9.3","eslint-config-publishable-package-json":"^1.0.0","eslint-import-resolver-typescript":"^4.4.4","husky":"^9.1.7","knip":"^5.80.2","lint-staged":"^16.2.7","prettier":"^3.7.4","release-it":"^19.2.3","typescript":"^5.9.3","vitest":"^4.0.16"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest","test:watch":"vitest --watch","test:coverage":"vitest --coverage","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","spell":"cspell lint '**/*.{ts,js,md,json}' --gitignore","spell:check":"cspell lint '**/*.{ts,js,md,json}' --gitignore","knip":"knip","release":"release-it"},"_id":"block-no-verify@1.1.2","_integrity":"sha512-fNIAXdvhTW/MwOqOHtede950Iym2T6R6JMETp3zpckO8zUp4JfmESbTwPOteSNpMdrhmyl2Z/Olgxtnb4MgJxA==","_resolved":"/tmp/afc9c110f8ce7d1dab25cdb92ed578e0/block-no-verify-1.1.2.tgz","_from":"file:block-no-verify-1.1.2.tgz","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-fNIAXdvhTW/MwOqOHtede950Iym2T6R6JMETp3zpckO8zUp4JfmESbTwPOteSNpMdrhmyl2Z/Olgxtnb4MgJxA==","shasum":"1ed8bdfbb7bac19a0388a240e230efb92f32acb0","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/block-no-verify/-/block-no-verify-1.1.2.tgz","fileCount":83,"unpackedSize":59941,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCjpSVbXdzA6Td2JVLa5BvO0c+YWtUwObTQIQo0C7/cUQIhAOIoSeVuI/jvKquQPEIckjvk6WhT3rT05Zf1izjX/m+w"}],"size":16889},"_npmUser":{"name":"anonymous","email":"ofek.gabay.he@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ofek.gabay.he@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/block-no-verify_1.1.2_1770469457515_0.7961475734525216"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-07T13:04:17.657Z","publish_time":1770469457657,"_source_registry_name":"default","contributors":[]},"1.1.3":{"name":"block-no-verify","version":"1.1.3","description":"CLI tool to block --no-verify flag in git commands. Prevents AI agents from bypassing git hooks.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"block-no-verify":"dist/cli.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest","test:watch":"vitest --watch","test:coverage":"vitest --coverage","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","spell":"cspell lint '**/*.{ts,js,md,json}' --gitignore","spell:check":"cspell lint '**/*.{ts,js,md,json}' --gitignore","knip":"knip","prepare":"husky","release":"release-it"},"keywords":["git","no-verify","hooks","cli","security","ai-safety","claude-code","agent-governance"],"author":"","license":"MIT","engines":{"node":">=20.0.0"},"packageManager":"pnpm@10.26.2","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/tupe12334/block-no-verify.git"},"bugs":{"url":"https://github.com/tupe12334/block-no-verify/issues"},"homepage":"https://github.com/tupe12334/block-no-verify#readme","devDependencies":{"@commitlint/cli":"^20.3.1","@commitlint/config-conventional":"^20.3.1","@cspell/dict-he":"^4.0.5","@release-it/conventional-changelog":"^10.0.6","@types/node":"^25.0.3","@vitest/coverage-v8":"^4.0.16","cspell":"^9.4.0","eslint":"^9.39.2","eslint-config-agent":"^1.9.3","eslint-config-publishable-package-json":"^1.0.0","eslint-import-resolver-typescript":"^4.4.4","husky":"^9.1.7","knip":"^5.80.2","lint-staged":"^16.2.7","prettier":"^3.7.4","release-it":"^19.2.3","typescript":"^5.9.3","vitest":"^4.0.16"},"gitHead":"2d39617f80ffcc08fb283abea3d69b079980aebb","_id":"block-no-verify@1.1.3","_nodeVersion":"24.14.0","_npmVersion":"11.12.0","dist":{"integrity":"sha512-GiviLbiM6pr4Ee3bkLqaYUWPlL4CeEjXfYNeuJwVOcJ2q6z5T72IVKxg8byqgAS2xvwe+4OtzhFgc1kV3uEFVA==","shasum":"d12e9f3b77a2e3f3775480bae252fe9aa8060e89","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/block-no-verify/-/block-no-verify-1.1.3.tgz","fileCount":83,"unpackedSize":60426,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/block-no-verify@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCWdVueSSrCUV9GzHxKjtviFLvJfL9rhTm82yfPJ3+RJgIhAMujG2NnujPwB2nh9gEaq2UN6FcxM8qxnQzfINt+nsic"}],"size":16689},"_npmUser":{"name":"anonymous","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b54cafa-f5cd-4311-aec8-de541e4fd3f0"}},"directories":{},"maintainers":[{"name":"anonymous","email":"ofek.gabay.he@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/block-no-verify_1.1.3_1774112982362_0.629065730457171"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-21T17:09:42.525Z","publish_time":1774112982525,"_source_registry_name":"default","contributors":[]},"1.1.5":{"name":"block-no-verify","version":"1.1.5","description":"CLI tool to block --no-verify flag in git commands. Prevents AI agents from bypassing git hooks.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"block-no-verify":"dist/cli.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest","test:watch":"vitest --watch","test:coverage":"vitest --coverage","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","spell":"cspell lint '**/*.{ts,js,md,json}' --gitignore","spell:check":"cspell lint '**/*.{ts,js,md,json}' --gitignore","knip":"knip","prepare":"husky","release":"release-it"},"keywords":["git","no-verify","hooks","cli","security","ai-safety","claude-code","agent-governance"],"author":"","license":"MIT","engines":{"node":">=20.0.0"},"packageManager":"pnpm@10.26.2","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/tupe12334/block-no-verify.git"},"bugs":{"url":"https://github.com/tupe12334/block-no-verify/issues"},"homepage":"https://github.com/tupe12334/block-no-verify#readme","devDependencies":{"@commitlint/cli":"^20.5.0","@commitlint/config-conventional":"^20.5.0","@cspell/dict-he":"^4.0.5","@release-it/conventional-changelog":"^10.0.6","@types/node":"^25.5.0","@vitest/coverage-v8":"^4.1.1","cspell":"^9.7.0","eslint":"^9.39.4","eslint-config-agent":"^1.9.3","eslint-config-publishable-package-json":"^1.0.0","eslint-import-resolver-typescript":"^4.4.4","husky":"^9.1.7","knip":"^5.88.1","lint-staged":"^16.4.0","prettier":"^3.8.1","release-it":"^19.2.4","typescript":"^5.9.3","vitest":"^4.1.1"},"gitHead":"a87cad194746360c78939af94561e3909c483902","_id":"block-no-verify@1.1.5","_nodeVersion":"24.14.1","_npmVersion":"11.12.1","dist":{"integrity":"sha512-W3HE+NDbpPU2fTtKezWMR1FgJ2rvnmyd92lqkuZsFOqzr/gY0HsC2I9or/txoreCdZOyv4D41SR9472TzajCew==","shasum":"242be753e795c7667580de46a9cf7689039d0086","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/block-no-verify/-/block-no-verify-1.1.5.tgz","fileCount":115,"unpackedSize":74690,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/block-no-verify@1.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCW1ZD2GTvU2kROl78oi8+4Wi38UTQ7VdzKPFrC98190AIgcqJD1Kfa4tSVMkbYhMInDbknNKP/MOFqEUrvAXCutws="}],"size":20969},"_npmUser":{"name":"anonymous","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4b54cafa-f5cd-4311-aec8-de541e4fd3f0"}},"directories":{},"maintainers":[{"name":"anonymous","email":"ofek.gabay.he@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/block-no-verify_1.1.5_1776555876569_0.9154766493254096"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-18T23:44:36.707Z","publish_time":1776555876707,"_source_registry_name":"default","contributors":[]}},"dist-tags":{"latest":"1.1.5"},"name":"block-no-verify","time":{"created":"2026-01-09T22:21:48.981Z","modified":"2026-04-18T23:44:50.035Z","1.0.0":"2026-01-09T22:21:32.084Z","1.1.0":"2026-01-09T23:29:23.419Z","1.1.1":"2026-01-10T14:44:00.977Z","1.1.2":"2026-02-07T13:04:17.657Z","1.1.3":"2026-03-21T17:09:42.525Z","1.1.5":"2026-04-18T23:44:36.707Z"},"readme":"# block-no-verify\n\nA platform-agnostic security tool that blocks ways AI agents can bypass local git hooks. It flags the `--no-verify` flag, `core.hooksPath` overrides, and GitHub MCP tool calls that write through the GitHub API.\n\n## Why?\n\nWhen using AI coding assistants like Claude Code, Gemini CLI, Cursor, or others, you might have git hooks (pre-commit, pre-push) that enforce code quality, run tests, or perform security checks. Agents can side-step those hooks in three common ways:\n\n- passing `--no-verify` to a git command,\n- overriding `core.hooksPath` (e.g. `git -c core.hooksPath=/dev/null ...`),\n- calling GitHub MCP tools such as `mcp__github__push_files` that commit or merge directly through the GitHub API, skipping the local hook chain entirely.\n\nThis package provides a CLI that can block all three, working with any AI tool that supports command / tool-use hooks.\n\n## Used By\n\n<a href=\"https://github.com/langgenius/dify\">\n  <img src=\"https://github.com/langgenius.png\" width=\"50\" height=\"50\" alt=\"Dify\" title=\"Dify - Open-source LLM app development platform (133k★)\">\n</a>\n<a href=\"https://github.com/nicolargo/glances\">\n  <img src=\"https://github.com/nicolargo.png\" width=\"50\" height=\"50\" alt=\"Glances\" title=\"Glances - Cross-platform system monitoring tool (32k★)\">\n</a>\n<a href=\"https://github.com/pubkey/rxdb\">\n  <img src=\"https://github.com/pubkey.png\" width=\"50\" height=\"50\" alt=\"RxDB\" title=\"RxDB - Local-first database for JavaScript applications (23k★)\">\n</a>\n<a href=\"https://github.com/promptfoo/promptfoo\">\n  <img src=\"https://github.com/promptfoo.png\" width=\"50\" height=\"50\" alt=\"Promptfoo\" title=\"Promptfoo - LLM testing and evaluation framework (18k★)\">\n</a>\n<a href=\"https://github.com/YFGaia/dify-plus\">\n  <img src=\"https://github.com/YFGaia.png\" width=\"50\" height=\"50\" alt=\"Dify Plus\" title=\"Dify Plus - Enhanced Dify distribution (2k★)\">\n</a>\n<a href=\"https://github.com/forcedotcom/salesforcedx-vscode\">\n  <img src=\"https://github.com/forcedotcom.png\" width=\"50\" height=\"50\" alt=\"Salesforce Extensions for VS Code\" title=\"Salesforce Extensions for VS Code (1k★)\">\n</a>\n<a href=\"https://centy.io\">\n  <img src=\"https://github.com/centy-io.png\" width=\"50\" height=\"50\" alt=\"Centy\" title=\"Centy\">\n</a>\n<a href=\"https://worktree.io\">\n  <img src=\"https://github.com/worktree-io.png\" width=\"50\" height=\"50\" alt=\"Worktree\" title=\"Worktree\">\n</a>\n\n## Installation\n\nAdd as a dev dependency to ensure a consistent, pinned version:\n\n```bash\npnpm add -D block-no-verify\n# or\nnpm install --save-dev block-no-verify\n```\n\nThen use it with `pnpm exec block-no-verify` or `npm exec block-no-verify`.\n\n## Quick Start\n\n```bash\n# Check a command directly\nblock-no-verify \"git commit --no-verify -m 'test'\"\n# Exit code: 2 (blocked)\n\n# Check a safe command\nblock-no-verify \"git commit -m 'test'\"\n# Exit code: 0 (allowed)\n\n# Pipe from stdin\necho \"git push --no-verify\" | block-no-verify\n# Exit code: 2 (blocked)\n```\n\n## Platform Integration\n\n### Claude Code\n\nAdd to your `.claude/settings.json`. The first matcher handles shell commands (`--no-verify`, `core.hooksPath`); the second matches any GitHub MCP tool so direct-to-API writes can also be blocked:\n\n```json\n{\n  \"hooks\": {\n    \"PreToolUse\": [\n      {\n        \"matcher\": \"Bash\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"pnpm exec block-no-verify\"\n          }\n        ]\n      },\n      {\n        \"matcher\": \"mcp__github__.*\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"pnpm exec block-no-verify\"\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n### Gemini CLI\n\nGemini CLI supports hooks via `.gemini/settings.json`. The hook system mirrors Claude Code's JSON-over-stdin contract and exit code semantics.\n\nAdd to your `.gemini/settings.json`:\n\n```json\n{\n  \"hooks\": {\n    \"BeforeTool\": [\n      {\n        \"matcher\": \"run_shell_command\",\n        \"hooks\": [\n          {\n            \"name\": \"block-no-verify\",\n            \"type\": \"command\",\n            \"command\": \"pnpm exec block-no-verify\",\n            \"description\": \"Block --no-verify flags in git commands\",\n            \"timeout\": 5000\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n> **Note:** Hooks are disabled by default in Gemini CLI. You may need to enable them in your settings. See [Gemini CLI Hooks Documentation](https://geminicli.com/docs/hooks/) for details.\n\n### Cursor\n\nCursor 1.7+ supports hooks via `.cursor/hooks.json`. The `beforeShellExecution` hook runs before any shell command.\n\nCreate `.cursor/hooks.json` in your project root:\n\n```json\n{\n  \"version\": 1,\n  \"hooks\": {\n    \"beforeShellExecution\": [\n      {\n        \"command\": \"pnpm exec block-no-verify\"\n      }\n    ]\n  }\n}\n```\n\n> **Note:** Cursor hooks are in beta. See [Cursor Hooks Documentation](https://cursor.com/docs/agent/hooks) for the latest information.\n\n### Generic Integration\n\nblock-no-verify accepts input in multiple formats:\n\n```bash\n# Plain text (default)\nblock-no-verify \"git commit --no-verify\"\n\n# JSON with command field\necho '{\"command\":\"git commit --no-verify\"}' | block-no-verify\n\n# JSON with other fields (cmd, input, shell, script)\necho '{\"cmd\":\"git push --no-verify\"}' | block-no-verify\n\n# Claude Code format (auto-detected)\necho '{\"tool_input\":{\"command\":\"git commit --no-verify\"}}' | block-no-verify\n```\n\n## CLI Options\n\n```text\nblock-no-verify [options] [command]\n\nOptions:\n  --format <type>   Input format: auto, plain, claude-code, json (default: auto)\n  --help, -h        Show help message\n  --version, -v     Show version\n\nInput Methods:\n  1. Command argument:  block-no-verify \"git commit --no-verify\"\n  2. Stdin (plain):     echo \"git commit --no-verify\" | block-no-verify\n  3. Stdin (JSON):      echo '{\"command\":\"...\"}' | block-no-verify\n```\n\n## Supported Git Commands\n\nThe following git commands are monitored for `--no-verify`:\n\n- `git commit`\n- `git push`\n- `git merge`\n- `git cherry-pick`\n- `git rebase`\n- `git am`\n\n## Blocked GitHub MCP Tools\n\nWhen a Claude Code / MCP-compatible payload includes a `tool_name`, the following GitHub MCP tools are blocked because they write through the GitHub API and therefore skip local git hooks:\n\n- `mcp__github__create_or_update_file`\n- `mcp__github__delete_file`\n- `mcp__github__push_files`\n- `mcp__github__merge_pull_request`\n- `mcp__github__update_pull_request_branch`\n\nRead-only GitHub MCP tools (e.g. `mcp__github__get_file_contents`, `mcp__github__list_pull_requests`) are not blocked.\n\n## Behavior\n\n| Command                  | Blocked? | Notes                                         |\n| ------------------------ | -------- | --------------------------------------------- |\n| `git commit --no-verify` | Yes      |                                               |\n| `git commit -n`          | Yes      | `-n` is shorthand for `--no-verify` in commit |\n| `git push --no-verify`   | Yes      |                                               |\n| `git push -n`            | No       | `-n` means `--dry-run` in push                |\n| `git merge --no-verify`  | Yes      |                                               |\n| `git merge -n`           | No       | `-n` means `--no-commit` in merge             |\n| `git commit -m \"msg\"`    | No       | No `--no-verify` flag                         |\n\n## Exit Codes\n\n- `0` - Command is allowed\n- `2` - Command is blocked (contains `--no-verify`)\n- `1` - An error occurred\n\n## Supported JSON Fields\n\nWhen using JSON input (auto-detected or with `--format json`), the following fields are recognized:\n\n| Field                | Description               |\n| -------------------- | ------------------------- |\n| `tool_input.command` | Claude Code format        |\n| `command`            | Generic command field     |\n| `cmd`                | Alternative command field |\n| `input`              | Input field               |\n| `shell`              | Shell command field       |\n| `script`             | Script field              |\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.\n\n## License\n\nMIT\n\n## References\n\n- [Claude Code Hooks](https://docs.anthropic.com/en/docs/claude-code)\n- [Gemini CLI Hooks](https://geminicli.com/docs/hooks/)\n- [Cursor Hooks](https://cursor.com/docs/agent/hooks)","users":{}}