{"record":{"id":"efa475f53f138898","repo":"chenhg5/cc-connect","slug":"claudecode-claude-code-exited-before-usage-rende-efa475","errorCode":null,"errorMessage":"claudecode: Claude Code exited before /usage rendered","messagePattern":"claudecode: Claude Code exited before /usage rendered","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agent/claudecode/claude_usage.go","lineNumber":175,"sourceCode":"\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 {\n\t\t\t\tlastScreen = screen\n\t\t\t\tlastChange = time.Now()\n\t\t\t}\n\t\t\tif usageReady(lastScreen) {\n\t\t\t\tif usageScreen == \"\" {\n\t\t\t\t\tusageScreen = lastScreen\n\t\t\t\t}\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 usageScreen != \"\" && time.Since(lastChange) >= claudeUsageStableFor {\n\t\t\t\treturn usageScreen, nil\n\t\t\t}\n\t\t\tif action := nextClaudeUsageProbeAction(lastScreen, &state, time.Now()); action != \"\" {","sourceCodeStart":157,"sourceCodeEnd":193,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/agent/claudecode/claude_usage.go#L157-L193","documentation":"Raised by the /usage probe when the Claude Code process exits with a non-zero status before rendering /usage, and no recognizable error-screen pattern matched — this is the bare sentinel with no wrapped cause, unlike the %w variant.","triggerScenarios":"Thrown at agent/claudecode/claude_usage.go:175 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Investigate why claude exits with an error — run it in a terminal directly","Verify claude auth status and API connectivity","Upgrade Claude Code"],"exampleFix":null,"handlingStrategy":"try-catch","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"}