~10 minute delay before first response in new session (Windows, MSIX) — API call itself is fast
Status Open
Reported on v2.1.222
Maintainer reply None cached
Activity 4 comments · opened Aug 11, 2026
Bug: ~10 minute delay before first response in a new Claude Code session (Windows, MSIX install)
Environment
- OS: Windows 11 Home (10.0.26200)
- Install: Claude desktop app (MSIX package
Claude_pzs8sxrjxfjjc), embedded CLIclaude-codeversion 2.1.222 autoUpdates: false
Symptom
- Every time I open Claude Code for the first time in a while and send my first message, the response takes roughly 9-10 minutes to arrive. The UI shows a status like "mustering" right before the response finally appears.
- Every subsequent message in the same session responds normally (seconds).
- A brand new session opened shortly after the first slow one also responds fast — the slowness only recurs after some idle/cold period.
What I've ruled out while investigating
- Not a hung local hook: this account has several org-managed Claude Code hooks (SessionStart/PreToolUse/UserPromptSubmit); live process inspection during the delay showed they fail/exit in milliseconds, not hang.
- Not SSO/token rotation: the local auth token/session files were not modified during the delay window.
- Not a specific MCP web connector: disabling all user-facing "Connectors" (Asana, Atlassian, Fireflies, Miro, Slack) individually did not reduce the delay.
- Not a broken git remote in the CWD: the project folder's git
originpointed to an inaccessible repo, and agit fetchagainst it was suspected (timestamp of a logged git-fetch failure coincided exactly with the response arriving), but removing/renaming theoriginremote entirely did not eliminate the delay. - Raw network to
api.anthropic.comis fast (~60ms) immediately after the incident, and DNS/AV are clean (stock Windows Defender only).
Most concrete lead
- The per-project cache in
~/.claude.json(projects["<path>"]) recorded, for the slow turn: lastAPIDuration: ~12.4slastAPIDurationWithoutRetries: ~12.4s (so the model API call itself was fast, essentially no retries)lastDuration: far larger than the API duration (order of many minutes)lastToolDuration: 0- So whatever is consuming the bulk of the wall-clock time is neither the model API call nor a tracked "tool call" — it happens somewhere in local session bootstrap (possibly MCP server connection/handshake fan-out — I have ~15 MCP servers/connectors enabled, both org-managed and personal — or hook execution) that isn't attributed in the app's own duration breakdown.
Ask
Is there a way to get verbose timing/tracing of the session-bootstrap phase (MCP connection setup, hook execution) specifically for the first message of a session, separate from the model API call? claude --debug did not capture this because the interactive TUI appears to write directly to the console handle rather than through redirectable stdout/stderr on Windows.
Happy to provide more logs if it helps (my own main.log shows the internal Electron-side event timeline, but I'd rather share targeted excerpts on request than paste it wholesale here).
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
Follow-up with a concrete timing breakdown
I found the exact session file for the slow run (
~/.claude/projects/<project>/<sessionId>.jsonl), and it lines up withlastSessionIdrecorded in~/.claude.jsonfor this project at the time:sessionId:3f808196-de7f-4ecc-9646-4317f0055394claudeprocess was launched at 12:57:35 (local).usermessage entry in that session's JSONL is timestamped 10:07:37 UTC (13:07:37 local).assistantresponse entries are timestamped 10:07:47–10:07:52 UTC — i.e. ~10-15 seconds after the message was actually sent to the model.So essentially all of the ~9m48s delay happened before the user message was ever dispatched to the API — purely in local session bootstrap (MCP server setup / hook execution / whatever happens between process launch and the first logged
userturn). Once the message was actually sent, the round trip was fast, consistent with thelastAPIDuration(~12.4s) vslastDuration(many minutes) gap I mentioned in the original report.Hope the session ID lets someone correlate with server-side telemetry for that request.
Internal app log excerpt for the same window (from the desktop app's own
main.log, not external guessing)Grepping
%AppData%\Claude\logs\main.logfor the exact delay window (12:57–13:08 local) shows the app doing plugin/skill/MCP resync right around then:None of these individually report as slow (sync completes report 0 downloaded/0 failed etc.), but they are all happening in the same narrow window where the user message sat un-dispatched for ~9m48s (see previous comment with exact timestamps). My guess is the actual bottleneck is somewhere in how these get sequenced/awaited relative to each other and to the MCP tool-list rebuild (15 servers / 74-77 tools), rather than any single one of them being individually slow — but that's a guess on my part; the log lines above are the literal facts, not my interpretation.
Important generalization: this is not limited to literally new chats
I reproduced this again in what I considered an existing, not-closed conversation (just resumed it after being idle for a while). The desktop app's
main.logshows:So from the user side it feels like continuing an existing conversation, but under the hood the app spun up a brand-new local session process for it — and that's exactly the kind of event that pays the ~10 minute tax described above. So the real trigger isn't "opening a new chat" per se, it's "Claude Code needs to start/re-establish a local session process," which can happen any time a conversation has been idle for a while and you send another message in it, not only when you explicitly start a fresh chat.
This makes the practical impact worse than the title suggests: it's not a one-time cold-start cost, it recurs any time a conversation goes idle and gets resumed — which is presumably why it keeps breaking the OP's VS Code integration (1-minute timeout) throughout the day, not just on first launch.