#13476: fix(sessions): show actual cron session model in sessions_list
gateway
stale
size: S
trusted-contributor
Cluster:
Cron Session Enhancements
## Summary
Fixes #13429
## Problem
`sessions_list` shows the agent default model (e.g., `claude-opus-4-6`) for cron isolated sessions even when the job successfully ran with a different model (e.g., `gemini-3-pro-preview`).
**Root cause:** `resolveSessionModelRef()` in `src/gateway/session-utils.ts` only checks `entry.modelOverride` (set by user via `session_status` tool) but ignores `entry.model` — the field written by `src/cron/isolated-agent/run.ts` after a successful run. When no user override exists, it falls back to the agent default model.
## Fix
Add an `else if` branch in `resolveSessionModelRef()` to check `entry.model` / `entry.modelProvider` when no `modelOverride` is set. Priority order:
1. `modelOverride` / `providerOverride` (user-set override) — highest priority
2. `model` / `modelProvider` (written by cron run) — new fallback
3. Agent default model — lowest priority
**Before:**
```typescript
if (storedModelOverride) {
provider = entry?.providerOverride?.trim() || provider;
model = storedModelOverride;
}
```
**After:**
```typescript
if (storedModelOverride) {
provider = entry?.providerOverride?.trim() || provider;
model = storedModelOverride;
} else if (entry?.model?.trim()) {
provider = entry?.modelProvider?.trim() || provider;
model = entry.model.trim();
}
```
## Reproduction & Verification
### Unit-level (direct function call):
**Before fix (main branch) — Bug reproduced:**
```
Cron session model: anthropic/claude-opus-4-6
Expected: google-gemini-cli/gemini-3-pro-preview
❌ FAIL: shows agent default instead of actual model
```
**After fix — All verified:**
```
Cron session model: google-gemini-cli/gemini-3-pro-preview ✅ PASS
Override session model: anthropic/claude-haiku-4-5 ✅ PASS
Empty session model: anthropic/claude-opus-4-6 (default) ✅ PASS
```
### E2E-level (real gateway environment):
Added an e2e test in `server.sessions.gateway-server-sessions-a.e2e.test.ts` that starts a real gateway server, writes a session store entry with `model: "gemini-3-pro-preview"` and `modelProvider: "google-gemini-cli"`, then calls `sessions.list` via WebSocket RPC and verifies the returned model fields:
**Before fix (main branch) — Bug reproduced through real gateway:**
```
sessions.list RPC → cronSession.model: undefined (falls back to agent default)
❌ FAIL: shows agent default instead of actual model
```
**After fix — Gateway returns correct model:**
```
sessions.list RPC → cronSession.model: "gemini-3-pro-preview"
sessions.list RPC → cronSession.modelProvider: "google-gemini-cli"
✅ PASS
```
## Effect on User Experience
**Before fix:**
User configures a cron job with `google-gemini-cli/gemini-3-pro-preview` → job runs successfully → `sessions_list` shows `model: "claude-opus-4-6"` → user thinks the model override is broken.
**After fix:**
`sessions_list` correctly shows `model: "gemini-3-pro-preview"` for cron sessions that ran with a non-default model.
## Testing
- ✅ 4 unit tests pass (`resolveSessionModelRef` in `session-utils.resolveSessionModelRef.test.ts`)
- ✅ 1 e2e test passes (`sessions.list` RPC in `server.sessions.gateway-server-sessions-a.e2e.test.ts`)
- ✅ Existing tests unaffected
Most Similar PRs
#21279: Fix/sessions list cron model override
by altaywtf · 2026-02-19
81.1%
#16303: fix: apply cron payload.model override to session entry and pass au...
by superlowburn · 2026-02-14
76.3%
#11474: fix(cron): respect subagents.model in isolated cron sessions
by AnonO6 · 2026-02-07
75.8%
#19385: fix: pass authProfileId from cron session to runEmbeddedPiAgent
by gigi-trifle · 2026-02-17
74.9%
#19328: Fix: preserve modelOverride in agent handler (#5369)
by CodeReclaimers · 2026-02-17
73.3%
#21615: fix(tui): preserve main session model during heartbeat model override
by lailoo · 2026-02-20
73.1%
#16390: fix(cron): jobs land in wrong agent session when agentId isn't in a...
by yinghaosang · 2026-02-14
72.5%
#23299: fix(status): show runtime model context limit instead of stale sess...
by SidQin-cyber · 2026-02-22
72.3%
#6750: fix(tui): show session model overrides in status bar
by ewijaya · 2026-02-02
72.0%
#10608: fix(agents): honor spawn model override in gateway and session spaw...
by 1kuna · 2026-02-06
71.2%