Repository navigation
Coding agents get stuck. AgentGuard 2.0 stops them in Claude Code.
agentguard hook claude-code runs as a Claude Code hook. Before a tool call runs, it refuses:
- the third identical call in a row
- a call that already failed twice, tried again unchanged
- with
--max-calls N, any call past a per-session cap (off by default)
Claude Code blocks the call and shows the reason to the agent. agentguard receipt prints every stop.
Install: python -m pip install agentguard47==2.0.0
Turn on the hook: agentguard hook claude-code --install --write
Also new in 2.0.0: agentguard receipt, agentguard run, and budget coverage for the OpenAI Responses API and the OpenAI Agents SDK. Full list: CHANGELOG.
Breaking: 2.0.0 needs Python 3.11 or newer. On Python 3.9 or 3.10, pin agentguard47==1.4.0. Migration guide
Limits: the hook sees tool calls, not model tokens. It is a guardrail, not a sandbox. Hook guide
Watch the 36 second video on X
What's Changed
Other changes
- Verify published examples before AgentGuard release emails by @bmdhodl in #772
- Add a copy-and-run shared local call limit demo (AG-30) by @bmdhodl in #770
- Refresh the activation report through 2026-09-24 (AG-29) by @bmdhodl in #771
- Close Scorecard code-scanning alerts we can fix in-repo by @bmdhodl in #728
- Restore the optional CrewAI ChromaDB disclosure by @bmdhodl in #724
- Record the AG-03 merge in the cofounder inbox by @bmdhodl in #762
- Add a next-ticket skill every coding agent can load by @bmdhodl in #764
- Require a short owner TLDR after every merged PR by @bmdhodl in #760
- Give newcomers a one-session compatibility fixture path (AG-19) by @bmdhodl in #773
- Run the published wheel on Windows, macOS and Linux after each release (AG-17) by @bmdhodl in #774
- Record 1.4.0 as published and verified on every supported OS by @bmdhodl in #775
- Add agentguard --version and prepare 1.4.1 by @bmdhodl in #776
- Test supported providers and frameworks against real packages in CI (AG-07) by @bmdhodl in #777
- Keep generated files out of the Claude review diff budget by @bmdhodl in #778
- Redesign and de-slop the public site by @bmdhodl in #779
- Log #778 and #779 in the inbox by @bmdhodl in #780
- Add agentguard receipt: shareable guard-stop receipts by @bmdhodl in #781
- Add a Claude Code hook and agentguard run by @bmdhodl in #782
- Redesign the landing page as a case file, from a new site design doc by @bmdhodl in #784
- Log #784 in the inbox by @bmdhodl in #785
- Patch the OpenAI Responses API and cover the Agents SDK (AG-06) by @bmdhodl in #786
- Log #786 in the inbox by @bmdhodl in #787
- Merge the two price tables and fix current-model pricing by @bmdhodl in #792
- Price LangChain LLM calls with the shared resolver by @bmdhodl in #793
- Log #793 in the inbox by @bmdhodl in #794
- Bill reasoning and thinking tokens once, inside output by @bmdhodl in #791
- fix(report): stop double-counting the call that trips a budget by @bmdhodl in #783
- Log #783 in the inbox by @bmdhodl in #795
- docs(evaluation): warn _extract_cost callers off summing trace spend by @bmdhodl in #797
- Log #791 in the inbox by @bmdhodl in #796
- Log #797 in the inbox by @bmdhodl in #799
- Price OpenAI and Gemini from their official pages; bill Gemini cache and thinking correctly by @bmdhodl in #800
- Log #800 in the inbox by @bmdhodl in #801
- Reconcile AgentGuard's OpenAI costs against OpenAI's usage records, nightly by @bmdhodl in #802
- Log #802 in the inbox by @bmdhodl in #803
- Keep org-wide OpenAI spend out of the public live-cost logs and artifacts by @bmdhodl in #804
- Log #804 in the inbox by @bmdhodl in #805
- Require complete CI results and verify published wheels nightly by @bmdhodl in #807
- feat(activation): compute the off-publish-day download figures by @bmdhodl in #806
- Add Trustabl Agent Scanner to CI by @trustabl-kathrina in #809
- Record reviewed PR merges and validation evidence by @bmdhodl in #811
- Fix published Windows first-use documentation by @bmdhodl in #812
- test: verify Responses and Agents SDK floor without false skips by @bmdhodl in #813
- docs: verify published Windows reservation races by @bmdhodl in #814
- test: verify real provider stream and async dispatch by @bmdhodl in #815
- docs: verify installed provider floors on Windows Python 3.9 by @bmdhodl in #819
- fix(sdk): guard OpenAI clients created before activation by @bmdhodl in #821
- fix(sdk): account for native Ollama response tokens by @bmdhodl in #822
- fix(sdk): show elapsed run time across recorded spans by @bmdhodl in #823
- docs: correct local-model billing claims and test manual example by @bmdhodl in #824
- fix(sdk): declare free local billing per OpenAI client by @bmdhodl in #825
- ci(sdk): require Responses and Agents minimum-version proof by @bmdhodl in #826
- fix(ci): regenerate tool lock with Dependabot's configured interpreter by @bmdhodl in #830
- docs: verify installed Windows framework boundaries for #736 by @bmdhodl in #832
- fix: verify framework proof across Windows line endings by @bmdhodl in #833
- fix(mcp): patch JWT dependency while preserving MCP 1.x by @bmdhodl in #840
- Verify approved Responses and Agents candidate acceptance by @bmdhodl in #841
- docs: fix stale and broken agent instructions from prompt audit by @bmdhodl in #842
- ci: point the weekly architecture reminder at the root ARCHITECTURE.md by @bmdhodl in #846
- ci: read the ops-cadence price date from price_table.py by @bmdhodl in #847
- release: prepare 2.0.0 (hold merge until 2026-10-06) by @bmdhodl in #849
New Contributors
- @trustabl-kathrina made their first contribution in #809
Full Changelog: v1.4.0...v2.0.0