[BUG] Windows: ~75s of silent, unlogged startup phases (ending at '[skills] idle' / '[ScheduledTasks] scheduler start') - persists with skills removed, MCP disabled, nonessential traffic off

Status Open
Reported on v2.1.224
Maintainer reply None cached
Activity 0 comments · opened Aug 8, 2026

Bug Description

On Windows, every claude start (interactive, -p, and --resume) spends ~75 seconds in two completely silent startup phases — nothing is written to the --debug log while they run. Total cold start for a trivial claude -p --model haiku "Reply OK" is 111–136s; the same command with a fresh empty CLAUDE_CONFIG_DIR in an empty directory is 6s.

The --debug log shows two large gaps between consecutive lines:

2026-08-07T15:54:14.823Z [DEBUG] Org fast mode: enabled
        <-- 59.7s gap, nothing logged -->
2026-08-07T15:55:14.537Z [DEBUG] [skills] idle — switching poll interval to 30000ms
        <-- 38.4s gap, nothing logged -->
2026-08-07T15:55:52.920Z [DEBUG] [ScheduledTasks] scheduler start() — enabled=false, hasTasks=false
2026-08-07T15:55:52.946Z [DEBUG] [claudeai-mcp] Fetching from https://api.anthropic.com/v1/mcp_servers?limit=1000

The same two-gap structure (~57–60s + ~17–38s) reproduces on every run, including with the user skills directory renamed away entirely — so the first gap is not (only) skill scanning. After the second gap, the rest of startup completes in ~1s.

Measurements (all claude -p --model haiku --strict-mcp-config "Reply OK", same machine, same hour, PowerShell Stopwatch wall time):

| Condition | Wall time |
|---|---|
| Full config (1,811 skills / 8.3k files, 3 plugins, 4 SessionStart hooks) | 128–136s |
| Same, after pruning skills dir 40k -> 8.3k files | 111s |
| ~/.claude/skills renamed away | 85.5s |
| --disable-slash-commands | 85.1s |
| CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 | 127.9s (no effect) |
| CLAUDE_CODE_CERT_STORE=bundled (the #84478 workaround) | 115.3s (no effect) |
| Fresh empty CLAUDE_CONFIG_DIR + empty cwd | 6s |

So: ~25–45s scales with skill count (1,811 SKILL.md files — separate, understandable cost), but the ~57s + ~17–38s silent phases persist with skills removed and are unexplained. Working-directory choice makes no difference (home dir vs small dir measured identical). stdio MCP servers ruled out (--strict-mcp-config throughout; the slowest server cold-starts in 1.5s standalone).

Knock-on effect: claude -p --resume <id> of an 8.7 KB session takes ~130s; a 44 MB session takes 5.4 minutes. Interactive resume looks hung and users abandon it.

Possibly related: #84478 (macOS: 45s silent startup in system CA trust-store lookup — same shape; its CLAUDE_CODE_CERT_STORE=bundled workaround does NOT help here), #83988 (Desktop: blank window up to 117s).

Asks

  1. What runs in the window that ends at [skills] idle — switching poll interval to 30000ms, and in the window that ends at [ScheduledTasks] scheduler start()? Neither logs anything while running.
  2. Emit debug lines (with durations) when these phases start/finish so they are diagnosable in the field.
  3. If these are network calls on a corporate proxy/VPN path, they need aggressive timeouts and/or an opt-out — CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 did not change them.

Environment Info

  • Platform: win32 — Windows 11 Enterprise 10.0.26200, corporate (proxy + VPN) network
  • Install: native (%USERPROFILE%\.local\bin\claude.exe), autoUpdates channel latest
  • Version: 2.1.224 (reproduced on 2.1.223)
  • Terminal: Windows Terminal / PowerShell 5.1
  • Config scale: 1,811 skills, 3 plugins (2 marketplaces), 4 SessionStart hooks (measured, total ~5s standalone), 3 stdio MCP servers (excluded via --strict-mcp-config in all measurements above)

View original on GitHub ↗