chenhg5/cc-connect · error

claudecode: Claude Code exited before /usage rendered

Error message

claudecode: Claude Code exited before /usage rendered

What it means

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.

Source

Thrown at agent/claudecode/claude_usage.go:175

			if screenErr := detectClaudeUsageOutputError(lastScreen, stderr.String()); screenErr != nil {
				return "", screenErr
			}
			return "", fmt.Errorf("claudecode: timed out waiting for Claude Code /usage panel: %w", probeCtx.Err())
		case err := <-readDone:
			if err != nil {
				return "", fmt.Errorf("claudecode: read Claude Code /usage output: %w", err)
			}
		case <-processDone:
			if usageScreen != "" {
				return usageScreen, nil
			}
			if screenErr := detectClaudeUsageOutputError(lastScreen, stderr.String()); screenErr != nil {
				return "", screenErr
			}
			if waitErr != nil {
				return "", fmt.Errorf("claudecode: Claude Code exited before /usage rendered: %w", waitErr)
			}
			return "", fmt.Errorf("claudecode: Claude Code exited before /usage rendered")
		case <-ticker.C:
			screen := normalizeClaudeUsageText(terminal.String())
			if screen != lastScreen {
				lastScreen = screen
				lastChange = time.Now()
			}
			if usageReady(lastScreen) {
				if usageScreen == "" {
					usageScreen = lastScreen
				}
			}
			if screenErr := detectClaudeUsageOutputError(lastScreen, stderr.String()); screenErr != nil {
				return "", screenErr
			}
			if usageScreen != "" && time.Since(lastChange) >= claudeUsageStableFor {
				return usageScreen, nil
			}
			if action := nextClaudeUsageProbeAction(lastScreen, &state, time.Now()); action != "" {

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Investigate why claude exits with an error — run it in a terminal directly
  2. Verify claude auth status and API connectivity
  3. Upgrade Claude Code
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at agent/claudecode/claude_usage.go:175 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06). Data as JSON: /api/errors/efa475f53f138898. Report an issue: GitHub.