{"version":"2.1.285","anchor":"result-messages-gain-turn-start-timing-diagnostics","canonical_anchor":"result-messages-gain-turn-start-timing-diagnostics","heading":"SDK result messages can now report a breakdown of time before the first model request","tier":"notice","area":"SDK","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.285\/e\/result-messages-gain-turn-start-timing-diagnostics","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.285","markdown":"### SDK result messages can now report a breakdown of time before the first model request\n\nSuccessful SDK results gain timing fields that break down the delay before the first model request, under the same conditions as startup timing\n\n**What**\n\nThe SDK is the toolkit for running Claude Code from your own programs. When a run finishes successfully, it sends back a result message. That message used to carry only `time_to_request_ms` and some frame timings. It can now also carry a more detailed breakdown:\n\n- `time_to_request_phases_ms`, time split by phase before the first request to the model\n\n- `process_turn_index`, which turn this is within the process\n\n- `time_to_request_cpu_ms`, processor time spent\n\n- `time_to_request_loop_lag_ms`, time lost to delays in Claude Code's internal processing\n\n- `time_to_request_major_faults`, a count of slow memory accesses that had to go to disk\n\n- `turn_start_phases_ms`, time split by phase at the start of the turn\n\n- `turn_start_control_requests_ms`, time spent on control requests at the start of the turn\n\n- `api_error`, a typed error field\n\nThese fields appear in sessions run with `CLAUDE_CODE_REMOTE`, and on setups that set `CLAUDE_CODE_EMIT_STARTUP_TIMING`.\n\n**Why**\n\nIf Claude Code feels slow before it starts answering, these fields show where that time goes.\n\n- Area: SDK\n- Names: `time_to_request_ms`\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 1\/5"}