OnourImpram

Routeledger — AI skill for Claude Code

AI community

Which model actually served each turn of your Claude Code session, and where routing quietly diverged from what you configured.

How to install Routeledger

This entry records only its repository, not the path inside it, so there is no exact command to give. Open OnourImpram/routeledger and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Routeledger does

Which model actually served each turn of your Claude Code session, and where routing quietly diverged from what you configured. Read-only, offline.

Alternatives in AI

  • Oh My Claudecode — 32 specialized agents and 7 execution modes for Claude Code, with smart model routing and automatic paralleliz 10.9k ★
  • Osaurus — Own your AI. The native macOS harness for AI agents -- any model, persistent memory, autonomous execution, cry 5.1k ★
  • Loushang — AI-native agent harness for coding workflows by python: multi-model LLM orchestration, stateful sessions, tool 1.3k ★

README

routeledger: which model actually served each turn of your session. A trace of twenty minutes of one real session, 19 July 15:32 to 15:52, shows the routing stepping between Fable 5 and Opus 4.8 three times, two of them marked as having no recorded cause, above a row of 22 subagent runs of which 9 declared no model at all.

routeledger

[![ci](https://github.com/OnourImpram/routeledger/actions/workflows/ci.yml/badge.svg)](https://github.com/OnourImpram/routeledger/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/routeledger)](https://www.npmjs.com/package/routeledger)

**Which model actually served each turn of your Claude Code session — and where the routing quietly diverged from what you configured.**

Claude Code picks the model for a turn from a stack of inputs: the `model` setting, the plan-mode boundary, `ANTHROPIC_DEFAULT_*` alias overrides, subagent frontmatter, `CLAUDE_CODE_SUBAGENT_MODEL`, allowlist substitutions, fallback chains, and automatic safety fallback. Most of them can change what you get **without raising an error**. You keep working; the answers keep coming; the model is not the one you configured.

Your session transcript already recorded what happened. `routeledger` reads it.

npx routeledger

What it looks like

Real output, from a real session (abridged — the full report lists all twelve flagged findings):

routeledger — session da6e9010-343d-4966-a90c-7a7de1af0825
  project: C--Users-onuri-Hezarfen-Vault
  claude code: 2.1.206, 2.1.207, 2.1.211, 2.1.218, 2.1.220

  MODELS SERVED
    claude-opus-4-8                7589 turns
    claude-fable-5                 3809 turns

  FINDINGS
    [OBSERVATION ] unexplained model change
                    claude-fable-5 -> claude-opus-4-8 @ 2026-07-19T15:32:10.329Z
                    inference: no user action found; but a