Fork of flamerix-ai's no-agent-summary (Claude Code agent_summary off switch), v3.1: same blocking code, plus a per-build self-check that warns instead of failing silently, a session-start check,… A developer published v3.1 of a fork of flamerix-ai's no-agent-summary hook for Claude Code, keeping the upstream code that blocks agent summaries unchanged while adding a per-build self-check that warns inside the session instead of failing silently when a Claude Code update breaks the hook's binary anchors. The fork also adds a session-start check, status.sh for listing which running Claude Code processes are hooked, and an install.sh that writes the hook, shell config and settings.json entries and can uninstall them byte-identically. Testing showed the hook cut summary calls during a ~175 s subagent run from 5 to 0, while disableAgentView: true still produced 5 calls and CLAUDE_CODE_FORK_SUBAGENT=0 stopped them only by disabling fork subagents entirely. Fork of flamerix-ai's gist https://gist.github.com/flamerix-ai/c3905705cc4205e5de3011fa2e74efce v3 . The code that blocks the summaries is upstream's, unchanged. This fork adds what makes it safe to leave installed across Claude Code updates. Upstream's full README follows the line below, unchanged. - Fails loudly, not silently, inside the session. Once per Claude Code build the hook scans the binary for the anchors it matches on ~50 ms on a 276 MB build, cached by path + size + mtime and records the verdict. A session-start check check.sh , added to Claude Code's settings.json by the installer then shows, inside the session, agent-summary blocker: this Claude Code build … no longer contains the code it blocks when an update broke the match, or agent-summary blocker: NOT loaded in this session when the session was started without BUN OPTIONS . It is silent when all is well. The hook's own stderr line is not enough: tested in an interactive session, Claude Code's full-screen UI draws over it and it only reappears after exit. - Proof it caught one. The first suppressed summary timer on each build is recorded, so you can see the hook did its job on the version you run, not only that it loaded. - status.sh lists every build checked anchors present, suppression seen and every running Claude Code process as hooked or NOT hooked restart it . Each hooked process leaves a marker while it runs, because macOS does not expose another process's environment. - install.sh copies the hook to ~/.local/share/no-agent-summary/ a path without spaces, since BUN OPTIONS splits on whitespace , adds one idempotent block to ~/.zshrc or ~/.bashrc , adds the session-start check to $CLAUDE CONFIG DIR/settings.json default ~/.claude ; existing hooks kept, previous file saved as settings.json.nas-bak ; needs python3 , and checks that claude --version loads the hook. install.sh --uninstall removes all three tested: settings and rc file come back byte-identical . git clone https://gist.github.com/c4511b8642c9d7179ab5761ff6473871.git no-agent-summary && bash no-agent-summary/install.sh Restart running sessions afterwards; status.sh names the ones still unhooked. Summary calls during one ~175 s subagent run, counted from AgentSummary Forking in --debug-file : | session | how summaries were on | no hook | hook pass | hook off | |---|---|---|---|---| | headless claude -p --model haiku | CLAUDE CODE AGENT PROGRESS SUMMARIES=1 | 5 | 5 v3 | 0 v3, and v3.1 | | interactive TUI, background agent | default, nothing set | n/a | 5 v3.1 | 0 v3.1 | - The session-start check, in real interactive sessions: a deliberately broken anchor showed the "no longer contains" message; a session started without BUN OPTIONS showed "NOT loaded"; a normal hooked session showed nothing. - Two settings people suggest instead, tested the same way with no hook: disableAgentView: true → still 5 calls it only hides the agents screen ; "env": {"CLAUDE CODE FORK SUBAGENT": "0"} → 0 calls, but it also turns off fork subagents. If you never use forks, that one line is the simplest fix. - Each summary call re-read the subagent's whole context median 37,250 tokens, from cache to return a 14-token label 10 calls . - Upstream's matching costs almost nothing: 2.2 ms over 4.8 minutes of an interactive session 4,566 setTimeout calls, 3,305 callbacks stringified . So it is left as is. - The gate admits the macOS native path ~/.local/share/claude/versions/