chenhg5/cc-connect · warning

context usage not found in rollout

Error message

context usage not found in rollout

What it means

After successfully reading the rollout JSONL, loadContextUsageFromRollout calls readContextUsageFromRollout; if it parses fine but returns nil, no token/context-usage record was present in the transcript, so the function returns this error. The file exists but carries no usable usage data.

Solutions

  1. Wait until at least one model turn completes, then re-read the usage.
  2. Inspect the rollout JSONL to confirm it contains token_count/context usage records.
  3. Return a zero/default usage instead of an error when the file has no usage records yet.
  4. Upgrade the codex CLI if rollouts consistently lack usage data.

Example fix

// before
if usage == nil {
    return nil, path, fmt.Errorf("context usage not found in rollout")
}
// after
if usage == nil {
    return &ContextUsage{}, path, nil // no turns yet; report empty usage
}
Defensive patterns

Strategy: fallback

Validate before calling

// Pre-check: does the rollout contain a usage line?
data, _ := os.ReadFile(path)
if !bytes.Contains(data, []byte("token_count")) {
    return defaultUsage // nothing recorded yet
}

Try / catch

usage, path, err := loadContextUsageFromRollout(sessionID, extraEnv)
if err != nil && strings.Contains(err.Error(), "context usage not found") {
    usage = &ContextUsage{} // fall back to zero usage
}

Prevention

When it happens

Trigger: readContextUsageFromRollout(path) returns (nil, nil) — the rollout JSONL for the session contains no context-usage/token_count entries, typically because the session has no completed model turns yet or the rollout predates the usage-record format.

Common situations: Querying context usage immediately after starting a session (only user input recorded); old codex rollout files lacking token_count fields; sessions aborted before the first assistant response.

Understand the failure class

Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.

Related errors


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

Appendix: source

Thrown at agent/codex/context_usage.go:133

		if err == nil && usage != nil {
			return usage, path, nil
		}
	}

	codexHome, err := resolveCodexHome(extraEnv)
	if err != nil {
		return nil, "", err
	}
	path = findSessionFileInCodexHome(codexHome, sessionID)
	if path == "" {
		return nil, "", fmt.Errorf("session file not found for %s", sessionID)
	}
	usage, err := readContextUsageFromRollout(path)
	if err != nil {
		return nil, path, err
	}
	if usage == nil {
		return nil, path, fmt.Errorf("context usage not found in rollout")
	}
	return usage, path, nil
}

func resolveCodexHome(extraEnv []string) (string, error) {
	if value := getenvFromList(extraEnv, "CODEX_HOME"); value != "" {
		return strings.TrimSpace(value), nil
	}
	if value := strings.TrimSpace(os.Getenv("CODEX_HOME")); value != "" {
		return value, nil
	}
	homeDir, err := os.UserHomeDir()
	if err != nil {
		return "", fmt.Errorf("resolve home directory: %w", err)
	}
	return filepath.Join(homeDir, ".codex"), nil
}

View on GitHub (pinned to 4000b2338a)