Tell HN: Claude 4.7 is ignoring stop hooks
TL;DR Highlight
Anthropic’s Claude Code reveals a security feature designed to ignore instructions within tool results inadvertently disables stop hooks, prompting workarounds and bug reports.
Who Should Read
Developers building automated workflows with Claude Code, or those controlling agent behavior with stop hooks/lifecycle hooks.
Core Mechanics
- Claude Code’s stop hook operates in two distinct ways: a ‘true control’ method using exit code 2 + stderr, and a method outputting JSON to stdout, which differ fundamentally.
- The stdout JSON method feeds into the model’s tool result context, an area Anthropic intentionally trained the model to disregard instructions within for prompt injection defense—meaning hook commands are designed to be ignored.
- Claude correctly ignores content in the tool result context as a security measure, preventing prompt injection attacks, but this also affects hook commands.
- Solutions include delivering hooks via user context instead of tool results, or adding explicit instructions to the system prompt stating specific hooks are trustworthy.
- Using exit code 2 provides deterministic control outside the agent’s inference layer, ensuring the model cannot ignore the signal; this is the preferred method for critical flow control.
- Claude Code documentation specifies that the `cat` command always exits with code 0, necessitating exit code 2 for forced interruption in stop hooks.
- A Claude Code team member (Thariq) requested users experiencing this issue to submit a ‘stop hook not firing’ report via the /feedback command, confirming the bug is acknowledged.
- Changes to the stop hook schema are suspected; one user observed Opus 4.7 ignoring hook responses while Claude 4.6 responded appropriately, suggesting a potential schema alteration.
Evidence
- "Claude Code team member Thariq confirmed awareness of the issue and requested bug reports via the /feedback command. A developer’s deep testing revealed Claude 4.6’s sensitivity to hooks contrasted with Opus 4.7’s complete disregard, potentially due to a schema change. Analysis suggests ignoring instructions in the tool result context is an intentional, trained behavior for prompt injection defense, though the side effect is undesirable. Some users reported overall reduced response quality in Claude 4.7 and considered migrating to Claude 5.5, with one criticizing the current hook/skill system as a temporary fix."
How to Apply
- "To reliably interrupt execution in Claude Code’s stop hook, use exit code 2 instead of the stdout JSON method. If implementing hooks as requests to the model, supplement with explicit instructions in the system prompt to trust those specific hook directives. Report malfunctioning stop hooks via the /feedback command with the message ‘stop hook not firing’. For automated tasks like test execution or file validation, execute commands directly within the hook script rather than requesting the model to perform them, ensuring deterministic execution."
Terminology
Related Papers
Ask HN: How do you get into a flow state when using AI to code?
Claude 같은 에이전트 기반 AI 코딩 도구가 보편화되면서 개발자들이 기존의 몰입 상태(flow state)를 잃어버리고 있다는 문제를 공유하고, 커뮤니티에서 각자의 대처 방법을 논의한 스레드.
Claude Desktop spawns 1.8 GB Hyper-V VM on every launch, even for chat-only use
Claude Desktop Windows 앱이 사용자가 AI 코드 실행 기능(Cowork)을 쓰지 않아도 실행 시마다 자동으로 1.8GB짜리 Hyper-V 가상머신을 생성해 메모리를 잡아먹는 버그가 보고됐다.
Apache Burr: Build reliable AI agents and applications
LangChain 같은 복잡한 프레임워크에 지친 개발자들을 위해 순수 Python으로 AI 에이전트와 상태 머신을 만들 수 있는 Apache 인큐베이팅 프레임워크다. 상태 관리, 관측성, Human-in-the-Loop 등을 DSL 없이 제공한다는 점이 특징이다.
A €0.01 bank transfer could compromise a banking AI agent
유럽 2위 디지털 뱅크 Bunq의 AI 어시스턴트에서 발견된 간접 프롬프트 인젝션 취약점으로, 단돈 €0.02 송금만으로 사용자에게 피싱 공격을 자동 실행할 수 있었다.
Grit: Rewriting Git in Rust with agents
GitButler 팀이 AI 에이전트 스웜을 활용해 Git을 Rust로 처음부터 재작성한 Grit 프로젝트를 공개했는데, GPL 라이선스 문제와 실용성 논란이 커뮤니티에서 크게 일고 있다.
Show HN: Claw Patrol, a security firewall for agents
AI 에이전트가 실행하는 SQL, kubectl, HTTP 요청을 프록시에서 가로채 HCL 규칙으로 허용/차단/사람 승인 요청을 할 수 있는 오픈소스 보안 게이트웨이. 에이전트가 프로덕션 환경에서 위험한 작업을 실행하기 전에 제어할 수 있어 중요하다.