[BUG] Tool calls get slower as a session grows: Read 41 ms in the first 100 calls, 115 ms after 1,000

Status Open
Reported on v2.1.289
Maintainer reply None cached
Activity 0 comments · opened Oct 10, 2026

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

  1. Run a session long enough to pass 1,000 tool calls without compacting (a 1M-context model makes this common).
  2. In its transcript, pair each assistant entry's tool_use block with the user entry carrying the matching tool_result, and subtract their timestamp fields.
  3. 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.

View original on GitHub ↗