changes
Track each sub-agent model switch, compare real runs before and after, and see a verdict: keep, watch, revert, or too early. Measured figures, not estimates.
Instructions
Every point where a sub-agent's model changed, with the real runs before and after compared and a verdict: keep, watch, revert, or too early. These are measured figures, not estimates.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | window: 7d, 30d, 90d, all, or a YYYY-MM-DD start date; default 30d | |
| source | No | restrict to one tool: "claude-code" or "codex"; default both | |
| project | No | restrict to one project directory, exact match, or a prefix if it ends with a path separator | |
| currency | No | override the detected plan: "usd" reports as charged, "share" reports as a subscription's list-price equivalent | |
| min_runs | No | runs required on each side of a change before judging it, at least 1; default 3 | |
| include_undecided | No | also return changes with too few runs on one side to judge; default false |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | "api" or "subscription", re-detected on every scan | |
| changes | Yes | ||
| currency | Yes | "usd" when the figures were charged, "list_price_equivalent" when a subscription covered them and the figures are what the usage would have cost on the API | |
| min_runs | Yes | ||
| undecided | Yes | changes with too few runs to judge, whether or not they are included | |
| scan_error | No | why the most recent scan attempt failed, in which case the figures are from the last successful scan | |
| age_seconds | Yes | seconds since that scan; the server rescans when a tool is called more than 60 seconds after the last attempt, or on refresh | |
| ingested_at | Yes | RFC 3339 time of the last successful transcript scan; empty if none has succeeded yet | |
| plan_reason | Yes | why that plan was chosen |