{"record":{"id":"0979b46c829be4a6","repo":"chenhg5/cc-connect","slug":"claudecode-timed-out-waiting-for-claude-code-usa","errorCode":null,"errorMessage":"claudecode: timed out waiting for Claude Code /usage panel: %w","messagePattern":"claudecode: timed out waiting for Claude Code /usage panel: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agent/claudecode/claude_usage.go","lineNumber":160,"sourceCode":"\tdefer ticker.Stop()\n\n\tvar (\n\t\tstate       claudeUsageProbeState\n\t\tlastScreen  string\n\t\tlastChange  = time.Now()\n\t\tusageScreen string\n\t)\n\n\tfor {\n\t\tselect {\n\t\tcase <-probeCtx.Done():\n\t\t\tif usageScreen != \"\" {\n\t\t\t\treturn usageScreen, nil\n\t\t\t}\n\t\t\tif screenErr := detectClaudeUsageOutputError(lastScreen, stderr.String()); screenErr != nil {\n\t\t\t\treturn \"\", screenErr\n\t\t\t}\n\t\t\treturn \"\", fmt.Errorf(\"claudecode: timed out waiting for Claude Code /usage panel: %w\", probeCtx.Err())\n\t\tcase err := <-readDone:\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", fmt.Errorf(\"claudecode: read Claude Code /usage output: %w\", err)\n\t\t\t}\n\t\tcase <-processDone:\n\t\t\tif usageScreen != \"\" {\n\t\t\t\treturn usageScreen, nil\n\t\t\t}\n\t\t\tif screenErr := detectClaudeUsageOutputError(lastScreen, stderr.String()); screenErr != nil {\n\t\t\t\treturn \"\", screenErr\n\t\t\t}\n\t\t\tif waitErr != nil {\n\t\t\t\treturn \"\", fmt.Errorf(\"claudecode: Claude Code exited before /usage rendered: %w\", waitErr)\n\t\t\t}\n\t\t\treturn \"\", fmt.Errorf(\"claudecode: Claude Code exited before /usage rendered\")\n\t\tcase <-ticker.C:\n\t\t\tscreen := normalizeClaudeUsageText(terminal.String())\n\t\t\tif screen != lastScreen {","sourceCodeStart":142,"sourceCodeEnd":178,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/agent/claudecode/claude_usage.go#L142-L178","documentation":"Raised by the Claude Code /usage probe loop when the probe context deadline expires before a stable usage screen was captured (and no recognized error screen appeared). It wraps context.DeadlineExceeded; the CLI ran but never rendered a settle-able /usage panel in time.","triggerScenarios":"Thrown at agent/claudecode/claude_usage.go:160 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the /usage command — slow terminals occasionally exceed the probe budget","Upgrade Claude Code; older versions render /usage slowly or differently","Check system load; a starved pty emulator delays screen stabilization"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4000b2338aa6e850c99df54f8b0ed6ed7460b401","analyzedAt":"2026-09-06T11:45:09.575Z","contentChangedAt":"2026-09-06T11:45:09.575Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}