[BUG] Tool calls get slower as a session grows: Read 41 ms in the first 100 calls, 115 ms after 1,000
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet (closest: #82988, a per-turn directory walk; this one grows with the session rather than the workspace)
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
What Claude Code itself spends around each tool call grows with the length of the session. Past about 1,000 tool calls, Read takes almost three times as long as it does early in the session, and Edit about twice as long.
I measured the time from each tool_use entry to its tool_result entry in my transcripts: 44,869 tool calls across my config dirs from Oct 7 to Oct 9, Claude Code 2.1.289 to 2.1.296, Windows 11. I kept only assistant messages holding a single tool_use, so parallel calls don't overlap, and grouped the calls by their position in their session. To rule out machine load, the table keeps only calls made while five or fewer sessions were active (median ms, with n):
| Tool | calls 1–99 | 100–299 | 300–999 | 1000+ |
| --- | --- | --- | --- | --- |
| Read | 41 (83) | 41 (133) | 52 (280) | 115 (1,373) |
| Edit | 88 (20) | 86 (82) | 90 (109) | 207 (391) |
| Grep | 81 (28) | 90 (23) | 95 (53) | 123 (584) |
Without the load filter the numbers are the same within a few ms (Read 45, 44, 55, 114).
No hook runs on Read or Grep in my setup, and Read does little beyond reading the file, so the growth is in Claude Code's own handling of the call. My sessions use 1M-context models and often pass 1,000 tool calls between compactions, and from there every call pays roughly 40–120 ms more.
What Should Happen?
The cost of handling a tool call should not depend on how many calls came before it in the session.
Error Messages/Logs
None. The cost is latency.
Steps to Reproduce
- Run a session long enough to pass 1,000 tool calls without compacting (a 1M-context model makes this common).
- In its transcript, pair each assistant entry's
tool_useblock with the user entry carrying the matchingtool_result, and subtract theirtimestampfields. - Compare Read calls from the first 100 calls with Read calls after the 1,000th: the median grows from ~41 ms to ~115 ms.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.296 (Claude Code)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Warp
Additional Information
The machine has 32 logical processors and 256 GB of RAM.