GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Codex agent compile copies Claude model aliases verbatim (`model: opus` -> `model = "opus"`) · Issue #3477 · microsoft/apm

Codex agent compile copies Claude model aliases verbatim (model: opus -> model = "opus") #3477

New issue
Copy link
New issue
Copy link
Open
#3481
Open
Codex agent compile copies Claude model aliases verbatim (model: opus -> model = "opus")#3477
#3481
Copy link
Labels
status/acceptedHuman scope approval; verify the issue's approval record and review contact before work.Human scope approval; verify the issue's approval record and review contact before work.

Description

@sosotravelier
sosotravelier
opened on Nov 5, 2026
Issue body actions

What happens

apm install with targets claude,codex compiles one .apm/agents/<name>.agent.md for both harnesses.
agent_integrator.py (_CODEX_MODEL_FIELDS = ("model", "model_reasoning_effort")) copies model into the Codex
TOML as-is. A source written for Claude Code uses the Claude aliases (opus, sonnet, haiku, inherit) or a
claude-* id, none of which Codex accepts.

Reproduced on apm 0.35.0 (latest, 2026-10-22):

# .apm/agents/ks-agent.agent.md
---
name: ks-agent
description: probe agent
tools: Read, Bash
model: sonnet
---
# .codex/agents/ks-agent.toml  (written by apm install)
name = "ks-agent"
description = "probe agent"
model = "sonnet"            # <-- not a Codex model
developer_instructions = "..."

tools is dropped with a warning (fine). model is copied with no warning.

Why it matters

One agent source cannot serve both harnesses: keep model and Codex gets an invalid agent, drop it and Claude loses
its model pin. Packages that target both have to ship the lowest common denominator.

Proposal (either is enough)

  1. Per-target override block in agent frontmatter, mirroring the per-target sections that already exist elsewhere:
    model: opus
    codex:
      model: gpt-5-codex
      model_reasoning_effort: high
    Codex compile reads codex.* first, then the top-level field.
  2. Minimum: when compiling for Codex, drop a model whose value is a Claude alias or claude-* id, and emit the same
    lossy-compilation diagnostic tools already gets.

Context

Found while packaging an internal plugin set (rulesync-authored agents) for Claude Code, Codex and Cursor through APM.

Activity

  1. github-project-automation
    added this to APM Roadmapon Nov 5, 2026
  2. danielmeppiel commented on Nov 10, 2026

    @danielmeppiel
    Daniel Meppiel (danielmeppiel)
    on Nov 10, 2026
    Collaborator
    More actions

    Decision: approve
    Area: project
    Scope: When compiling an agent for Codex, keep a source-declared model string exactly as written (OpenAPM req-tg-015, #3126) and emit a names-only lossy-compilation warning naming the agent when the value is a Claude model alias (opus, sonnet, haiku, inherit) or a claude-* id, so mixed Claude/Codex packages learn the value is not a Codex model.
    Done when: Agent integrator tests show the warning for each Claude alias and a claude-* id, no warning for other strings, the generated TOML byte-identical to today for all inputs, the warning never contains other frontmatter values, and req-tg-015 conformance tests still pass.
    Out of scope: Per-target model values or any codex: frontmatter block (#3324), dropping or translating model values, model validation for other targets, model_reasoning_effort handling.
    Review contact: Daniel Meppiel (@danielmeppiel)

  3. danielmeppiel commented on Nov 10, 2026

    @danielmeppiel
    Daniel Meppiel (danielmeppiel)
    on Nov 10, 2026
    Collaborator
    More actions

    The apm-scope:v1 record above was approved by Daniel Meppiel (@danielmeppiel) at Gate B on 2026-11-10 in the coordinator session of the issue-reduction program. It is the scope a fix for this issue will be reviewed against.

    Review contact: Daniel Meppiel (@danielmeppiel).

    Linked pull requests:

    • PR fix(codex): drop Claude model ids from compiled Codex agents #3481 by JohnnyXu (@xubenqiang) is not accepted as-is: it drops the model value, which conflicts with OpenAPM req-tg-015. Details are on the PR.

    Generated by autopilot-issue-triage-worker. This comment is AI-generated and may contain errors.

  4. Daniel Meppiel (danielmeppiel)
    added
    status/acceptedHuman scope approval; verify the issue's approval record and review contact before work.Human scope approval; verify the issue's approval record and review contact before work.
    on Nov 10, 2026
  5. Daniel Meppiel (danielmeppiel)
    added 2 commits that reference this issue on Nov 10, 2026

    fix(codex): keep Claude model ids verbatim and warn instead of dropping

    e850547

    test(spec): pin req-tg-015 verbatim preservation for Claude model ids

    07c5d5e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    status/acceptedHuman scope approval; verify the issue's approval record and review contact before work.Human scope approval; verify the issue's approval record and review contact before work.

    Type

    No type

    Projects

    • APM Roadmap
      Status
      No status
      Show more project fields

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    You are visitor 01402503 — GeezerVison does not store the pages you look up.
    Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.