Under the hoodTier: how much it should matter to you
1Useful: my rating, 1 to 5
1Signal: worth watching, 1 to 5
API RequestsArea: what it touches
Internal ChangesKind: in v2.1.286,
Internal ChangesSection of the release
What
Claude Code times each turn in named phases so the time before a request goes out can be broken down. The list of phases used to end at client_creation. It now adds:
tool_pool_refresh, model_gates and request_build.
Four retry phases: redrive_reactive_compact, redrive_fallback_model, redrive_non_streaming and redrive_other. A redrive is a request sent again after the first attempt. A new noteRedrive records it, and the time after the first send goes into redrive_<cause>, or redrive_other when the cause has no name of its own.
The documentation for time_to_request_phases_ms lists the new phases.
Result messages, sent at the end of a turn, also gain two fields. Both are marked internal and appear only together with request_sent_wall_ms:
first_request_input_tokens: the first request's input tokens plus cache-read and cache-creation tokens.
user_message_server_received_wall_ms: when the server received the user's message.
The SDK's process transport, the part that starts Claude Code as a separate program, now calls options.onProcessSpawned(pid) once that program has started.
Why
This is timing data for programs that host Claude Code sessions, with no visible effect in normal use. It shows more precisely where the time before a response goes, including time lost to retries.
How sure we are
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubtIt is unclear whether these timings are sent anywhere or only kept locally.