{"version":"2.1.286","anchor":"frame-intake-phases-ms-schema-gains-startup-wait-control-re","canonical_anchor":"frame-intake-phases-ms-schema-gains-startup-wait-control-re","heading":"SDK message timing breakdown separates startup and queue waits","tier":"internal","area":"SDK","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.286\/e\/frame-intake-phases-ms-schema-gains-startup-wait-control-re","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.286","markdown":"### SDK message timing breakdown separates startup and queue waits\n\nThe internal timing for handling an SDK message now shows startup wait and waits behind earlier messages as their own steps\n\n**What**\n\nThe SDK (the kit for driving Claude Code from other programs) can report how long each step takes between a message arriving and it being queued for Claude. The first step used to be one block that included waiting behind earlier messages. It is now split into:\n\n- `startup_wait`, time spent waiting for Claude Code to finish starting\n\n- `control_requests_ahead`, time spent behind earlier control requests\n\n- `user_frames_ahead`, time spent behind earlier user messages\n\n- `before_read`, which now holds only what is left over\n\n**Why**\n\nWhen a message is slow to be handled, this shows more precisely where the time went.\n\n- Area: SDK\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 1\/5"}