Codex Analytics attributes turns to gpt-5.6-luna with no local Luna invocation evidence

Open 💬 3 comments Opened Aug 10, 2026 by interconnectedMe
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

What issue are you seeing?

Codex Analytics reports turns for gpt-5.6-luna on a day when I did not intentionally start any Luna chats, and the local Codex session logs for that local day do not show Luna in any active model, model selector, worker selector, or command argument field.

Observed in Codex Analytics for Aug 9, 2026:

  • gpt-5.5: 142 turns
  • gpt-5.6-luna: 84 turns
  • gpt-5.4: 106 turns
  • gpt-5.4-mini: 3 turns

A structured scan of local session JSONL logs for the same Europe/London local day found:

{
  "turn_context_models": {
    "gpt-5.4": 129,
    "gpt-5.4-mini": 7,
    "gpt-5.5": 110
  },
  "localDayTurns": 246,
  "token_count_events_by_last_turn_model": {
    "gpt-5.4": 1686,
    "gpt-5.4-mini": 99,
    "gpt-5.5": 2487
  },
  "modelOrSelectorFieldHitsForGpt56Luna": 0,
  "commandArgOrMessageHitsForGpt56Luna": 0,
  "toolDescriptionHitsForGpt56Luna": 21
}

The only local gpt-5.6-luna string hits were in tool descriptions listing available model overrides, not in fields indicating the selected or invoked model.

What steps can reproduce the bug?

  1. Use Codex across a local day while intentionally selecting non-Luna models.
  2. Open Codex Analytics and inspect the "By model" counts for that day.
  3. Compare the analytics counts with local session JSONL records for the same local-day window, checking turn_context.model plus model/selector/command argument fields.
  4. Observe that Analytics attributes turns to gpt-5.6-luna even though the local logs show no Luna model invocation evidence.

What is the expected behavior?

Codex Analytics "By model" should reconcile with the user-visible/requested model labels in local session logs, or clearly document when counts reflect hidden server-side execution models, fallback routing, remaps, or internal subagent accounting.

Additional information

This makes model usage auditing difficult for multi-agent workflows. In this case, I intentionally routed work to specific models and did not expect Luna usage.

View original on GitHub ↗

3 Comments

github-actions[bot] contributor · 18 days ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #37009

Powered by Codex Action

interconnectedMe · 12 days ago

Additional evidence that may be relevant here, but the Luna connection is still only a hypothesis.

On the same Codex VS Code extension build 26.810.52044 with bundled codex-cli 0.148.0-alpha.9 on Linux, I ran an A/B control with no intervening extension update:

  • Fresh IDE chat started with gpt-5.5: the root selected collaboration V1. An identically shaped custom-provider child (DeepSeek V4) received the exact unique-token + semantic-read task and completed it correctly.
  • Fresh IDE chat started with gpt-5.6-sol: the root selected collaboration V2. The same custom-provider child launched, but received an effectively empty payload and asked what it should work on.

Switching models later did not repair the already-started thread. The starting model appears to stamp/persist the thread's multi_agent_version / collaboration transport.

That matches the current upstream source shape: session code resolves and then reuses a thread-level multi_agent_version, and V2 handoff uses encrypted inter-agent messages by default. It also matches the failure family in #36586, where V2 custom-provider children lose the actual task payload.

Hypothesis only: if a Sol-started thread pins a different collaboration/runtime path from a GPT-5.5-started thread, that could help explain why some requested child-model overrides appear ignored or redirected, and why Analytics might attribute turns to a model I did not explicitly request. But I do not yet have runtime evidence that the backend actually served gpt-5.6-luna in the attributed turns, so I am not claiming Luna routing is proven here.

kevinfosterNG · 9 days ago

[ +1 ] Adding another repro from 2026-08-17 with local Codex usage data.

ChatGPT/Codex Analytics reports the following By model for that day:

  • gpt-5.6-terra: 71 turns
  • gpt-5.6-luna: 81 turns
  • gpt-5.6-sol: 2 turns
  • gpt-5.3-codex-spark: 1 turn

Total: 155 turns

The By surface view for the same day reports:

  • Desktop: 154 turns
  • Code review: 1 turn

I did not select Luna that day. My intentional Desktop usage was primarily Terra, with occasional Sol usage.

I then queried the local Codex session data using:

npx ccusage codex daily --since 20260817 --until 20260817 --json

The resulting model breakdown is:

"models": {
  "gpt-5.3-codex-spark": {
    "inputTokens": 18922,
    "outputTokens": 1024,
    "cacheReadTokens": 43648,
    "totalTokens": 63594,
    "isFallback": false
  },
  "gpt-5.6-sol": {
    "inputTokens": 185642,
    "outputTokens": 25050,
    "cacheReadTokens": 3260416,
    "totalTokens": 3471108,
    "isFallback": false
  },
  "gpt-5.6-terra": {
    "inputTokens": 2258493,
    "outputTokens": 365362,
    "cacheReadTokens": 99644928,
    "totalTokens": 102268783,
    "isFallback": false
  }
}

Total locally recorded Codex usage for the day:

Input:       2,463,057
Output:        391,436
Cache Read: 102,948,992
Total:      105,803,485 tokens

There is no gpt-5.6-luna entry at all in the ccusage output.

I also searched both active and archived Codex JSONL files directly:

Select-String `
  -Path "$env:USERPROFILE\.codex\sessions\**\*.jsonl",
        "$env:USERPROFILE\.codex\archived_sessions\**\*.jsonl" `
  -Pattern '"model"\s*:\s*"gpt-5\.6-luna"'

Result: no matches

And a broader search:

Select-String `
  -Path "$env:USERPROFILE\.codex\sessions\**\*.jsonl",
        "$env:USERPROFILE\.codex\archived_sessions\**\*.jsonl" `
  -Pattern 'gpt-5\.6-luna'

Result: no matches

So Analytics is attributing 81 / 155 turns (~52%) to Luna, while:

  • Luna was never intentionally selected
  • Luna does not appear in the local ccusage model breakdown
  • Luna does not appear anywhere in the active or archived local session JSONL
  • The locally recorded models are Terra, Sol, and Codex Spark only
  • None of the locally recorded models are marked as fallback usage
  • Only 1 of 155 Analytics turns is attributed to Code Review, so GitHub PR review does not explain the Luna count

This appears very similar to the original report, but with the additional ccusage/token breakdown showing that the local Codex records and Analytics model attribution disagree substantially.

<img width="1117" height="436" alt="Image" src="https://github.com/user-attachments/assets/2bcd0844-dfa0-4a01-a683-f2590982cce8" />

<img width="1169" height="563" alt="Image" src="https://github.com/user-attachments/assets/ec196522-b7ee-4f2f-96f3-ef2c2ec4653d" />