fix(claude): skip checkpoint requests for read-only and unsupported tools - #2028
Merged
Conversation
…ools The Claude preset produced pre/post checkpoint requests for every hook invocation, including read-only tools (Read, Glob, Grep, Task) and unknown tools, treating anything that wasn't Bash as a file edit. Each of those requests cost hook parsing, transcript handling, an IPC round trip, and daemon admission for a checkpoint that can never attribute anything. Classify the hook's tool_name up front and return no events for ToolClass::Skip, mirroring how every other agent preset already routes through classify_tool. Payloads without tool_name (legacy Claude versions) keep the historical treat-as-file-edit behavior. NotebookEdit is added to Claude's FileEdit set so notebook edits keep checkpointing (it previously fell through to the same catch-all as Write/Edit). Ported from #1979 (closed) onto current main. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Member
Author
This was referenced Jul 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Read,Glob,Grep,Task) and unknown tools — treating anything that wasn't Bash as a file edit. Each request cost hook parsing, transcript handling, an IPC round trip, and daemon admission for a checkpoint that can never attribute anything.tool_nameup front and return no events forToolClass::Skip, mirroring how every other agent preset already routes throughclassify_tool.tool_name(legacy Claude versions) keep the historical treat-as-file-edit behavior.NotebookEditis added to Claude's FileEdit set so notebook edits keep checkpointing (previously it fell through to the same catch-all as Write/Edit; with Skip semantics it would have silently lost attribution).Test coverage
test_claude_ignores_read_only_and_unsupported_tools: pre+post hooks for Read/Glob/Grep/Task/UnknownTool produce no events.test_ignored_claude_hook_produces_no_checkpoint_requests: end-to-end through the orchestrator.Ported from #1979 (closed) onto current main. Solo-mergeable.
🤖 Generated with Claude Code