Codex: agents/openai.yaml sidecar
OpenAI’s Codex CLI (openai/codex) supports the agent-skills format natively, plus an optional Codex-specific sidecar manifest for OpenAI-side extensions. This page covers what is portable and what is Codex-specific.
Source: LANDSCAPE 1.4, 2.2.
Native Agent Skills support
Codex scans for skills in three locations, in this priority order:.agents/skills/<skill-name>/SKILL.md(project scope).$HOME/.agents/skills/<skill-name>/SKILL.md(user scope)./etc/codex/skills/<skill-name>/SKILL.md(admin scope).
docs/05-authoring/frontmatter.md) loads in Codex without modification. Discovery is at startup; progressive disclosure follows the spec.
Invocation
Codex supports both implicit (description-based auto-trigger) and explicit invocation (/skills, $prefix).
The policy.allow_implicit_invocation field in the optional agents/openai.yaml sidecar (see below) defaults to true, matching Claude Code’s auto-trigger behavior. Set to false to require explicit invocation.
The optional sidecar: agents/openai.yaml
Codex-specific extensions live in a sibling YAML file at agents/openai.yaml next to the SKILL.md. The sidecar is optional; a skill works without it.
What the sidecar provides:
interface. Display name, icon, brand color, default prompt. Codex UI surfaces these in its skill picker.policy.allow_implicit_invocation. Boolean; defaulttrue. Whenfalse, the agent cannot auto-fire the skill.dependencies. MCP servers the skill depends on. Codex resolves and ensures availability before the skill activates.
Multi-agent / subagent semantics
Codex’s subagent support is opt-in via TOML config:context: fork-style skills (Claude Code pattern) do not work in Codex; the skill loads but the fork primitive is unavailable. Authors targeting both harnesses should test the fork path on Codex with multi_agent = true enabled.
Persistent context
Where Claude Code usesCLAUDE.md and Codex uses AGENTS.md for persistent always-on context, the convention is “vendor-neutral file in the repo root, vendor-specific symlink as needed.” Codex reads AGENTS.md; Claude Code reads CLAUDE.md. Some authors symlink one to the other for cross-vendor compatibility; others maintain both.
AGENTS.md is NOT a skill; it is the always-on memory equivalent. See docs/02-mental-model.md for the mental model.
What Codex does NOT support (vs Claude Code)
- No skill-side hooks. Codex does not run hooks scoped to a skill’s invocation. Use the harness’s own hook system (config-level, not skill-level) if you need event handling.
- No
${CLAUDE_PLUGIN_ROOT}substitution. Codex has its own path semantics; the Claude Code substitution token does not apply here. - No Claude Code-extension frontmatter fields.
when_to_use,disable-model-invocation,user-invocable,model,effort,paths, etc. are silently ignored. Stay in the cross-platform-safe column for portability; use the optional sidecar for Codex-specific behavior.
Sources
LANDSCAPE1.4 (cross-platform comparison; Codex section).LANDSCAPE2.2 (Codex CLI: native Agent Skills, agents/openai.yaml sidecar, multi-agent opt-in, AGENTS.md).
docs/11-cross-platform/others.md.