chenhg5/cc-connect · error

claudecode: missing usage percentage in %s block

Error message

claudecode: missing usage percentage in %s block

What it means

A parse guard in parseClaudeUsageWindow: the section header was found, but no line inside the block matched the usage-percentage regex. It fires when the block is present but its content layout differs from expectations (format change or truncated capture).

Source

Thrown at agent/claudecode/claude_usage.go:375

		if i > start+1 && (strings.HasPrefix(lower, "current ") || strings.HasPrefix(lower, "extra usage")) {
			break
		}
		if usedPercent == nil {
			if m := claudeUsagePercentRe.FindStringSubmatch(line); len(m) == 2 {
				v, _ := strconv.Atoi(m[1])
				usedPercent = &v
				continue
			}
		}
		if resetRaw == "" {
			if m := claudeUsageResetLineRe.FindStringSubmatch(line); len(m) == 2 {
				resetRaw = strings.TrimSpace(m[1])
			}
		}
	}

	if usedPercent == nil {
		return core.UsageWindow{}, fmt.Errorf("claudecode: missing usage percentage in %s block", header)
	}

	window := core.UsageWindow{
		Name:          header,
		UsedPercent:   *usedPercent,
		WindowSeconds: windowSeconds,
	}

	if resetRaw != "" {
		resetAt, err := parseClaudeUsageResetTime(resetRaw, now)
		if err == nil {
			resetAfter := int(resetAt.Sub(now).Round(time.Second).Seconds())
			if resetAfter < 0 {
				resetAfter = 0
			}
			window.ResetAfterSeconds = resetAfter
			window.ResetAtUnix = resetAt.Unix()
		}

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Update Claude Code and cc-connect to matching versions
  2. Inspect the captured block content to see what replaced the percentage line
  3. Retry once in case of a partially rendered screen
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at agent/claudecode/claude_usage.go:375 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/d908d4402fc19766. Report an issue: GitHub.