Summary
Documentation-coverage follow-up for the current Codex plugin system observed on 2026-09-01. This is the Codex-specific child of #100 /#107 . It excludes Skill IR work already tracked by #108 , canonical event-family routing on #97 , schema adoption on #133 , and end-user installation on #181 /#101 .
The current adapter emits .codex-plugin/plugin.json, .mcp.json, hooks/hooks.json, skills, and a local marketplace through packages/agent-bundle/src/adapters/codex.ts, but its pinned schema/capability record only models a subset of the now-documented surface.
Sources
Observed 2026-09-01:
Checklist
Every item must become implemented, explicitly delegated, or recorded in the Codex capability table as unavailable/deferred with a reason.
Manifest/package
Full .codex-plugin/plugin.json metadata (author details, homepage, repository, license, keywords)
Complete interface fields: display/short/long descriptions, developer, category, capabilities, legal/site URLs, starter prompts, brand color, icons/logo/screenshots
apps / .app.json registered MCP mapping compatibility surface
mcpServers, skills, and hooks as documented path forms; hooks allow path, path array, inline object, or inline-object array
Optional assets and submission-facing package constraints
MCP server policy under plugins.<plugin>.mcp_servers.<server> (enabled/tools/approval modes)
PLUGIN_ROOT/PLUGIN_DATA plus CLAUDE_PLUGIN_ROOT/CLAUDE_PLUGIN_DATA compatibility environment
Hook contract
Pin the release-documented events: SessionStart, SessionEnd, PreToolUse, PermissionRequest, PostToolUse, PreCompact, PostCompact, UserPromptSubmit, SubagentStart, SubagentStop, and Stop
Credit the running SubagentStart/SubagentStop correction lane; do not reimplement it here
Reconcile generated-schema-only Interrupt as deferred until the release behavior docs support it
Support or explicitly reject handler types: command and mcp_tool; keep parsed-but-skipped prompt/agent truthful
mcp_tool structured input expansion, connected-server requirement, synchronous/non-recursive execution, and timeout behavior
async command hooks, eight-per-session concurrency, cancellation at session end, and non-controlling output rules
additionalContextLimit spill behavior and configuration diagnostics
commandWindows/command_windows, statusMessage, and per-event timeout rules
Exact matcher semantics by event, including ignored matchers, apply_patch aliases (Edit/Write), local-function coverage, and hosted-tool exclusions
Trust-by-current-hash review, /hooks control, plugin hooks skipped until trusted, managed hooks immutable
Validate event I/O against the generated schemas under codex-rs/hooks/schema/generated rather than the current open-ended event map
Marketplace/install/policy
Repo/personal marketplace discovery and legacy .claude-plugin/marketplace.json compatibility
Local, Git root, git-subdir, and npm sources; path containment, ref/SHA, lifecycle-script prohibition, and unresolved-entry behavior
Marketplace interface, plugin policy.installation, policy.authentication, category, cache layout, and enable state in config.toml
CLI codex plugin add/list/remove and marketplace add/list/upgrade/remove JSON contracts
features.plugins, features.hooks, deprecated codex_hooks, inline [hooks], and managed requirements.toml
allow_managed_hooks_only and marketplace restrict_to_allowed_sources behavior
Public submission/publish controls and requirements are documented as distribution policy, not claimed as local compiler behavior
Acceptance
No documented Codex surface remains implicit: each has a four-state capability row with dated evidence.
Requested unsupported behavior fails before publication rather than being dropped by permissive schemas.
Compile semantic Agent event routes into native host hooks #97 owns canonical event-route expansion; this issue owns native Codex manifest/hook/lifecycle fidelity.
Related: #107 #100 #97 #101 #108 #133 #181
Summary
Documentation-coverage follow-up for the current Codex plugin system observed on 2026-09-01. This is the Codex-specific child of #100/#107. It excludes Skill IR work already tracked by #108, canonical event-family routing on #97, schema adoption on #133, and end-user installation on #181/#101.
The current adapter emits
.codex-plugin/plugin.json,.mcp.json,hooks/hooks.json, skills, and a local marketplace throughpackages/agent-bundle/src/adapters/codex.ts, but its pinned schema/capability record only models a subset of the now-documented surface.Sources
Observed 2026-09-01:
Checklist
Every item must become implemented, explicitly delegated, or recorded in the Codex capability table as unavailable/deferred with a reason.
Manifest/package
.codex-plugin/plugin.jsonmetadata (authordetails, homepage, repository, license, keywords)interfacefields: display/short/long descriptions, developer, category, capabilities, legal/site URLs, starter prompts, brand color, icons/logo/screenshotsapps/.app.jsonregistered MCP mapping compatibility surfacemcpServers,skills, andhooksas documented path forms; hooks allow path, path array, inline object, or inline-object arrayplugins.<plugin>.mcp_servers.<server>(enabled/tools/approval modes)PLUGIN_ROOT/PLUGIN_DATAplusCLAUDE_PLUGIN_ROOT/CLAUDE_PLUGIN_DATAcompatibility environmentHook contract
SessionStart,SessionEnd,PreToolUse,PermissionRequest,PostToolUse,PreCompact,PostCompact,UserPromptSubmit,SubagentStart,SubagentStop, andStopInterruptas deferred until the release behavior docs support itcommandandmcp_tool; keep parsed-but-skippedprompt/agenttruthfulmcp_toolstructured input expansion, connected-server requirement, synchronous/non-recursive execution, and timeout behaviorasynccommand hooks, eight-per-session concurrency, cancellation at session end, and non-controlling output rulesadditionalContextLimitspill behavior and configuration diagnosticscommandWindows/command_windows,statusMessage, and per-event timeout rulesapply_patchaliases (Edit/Write), local-function coverage, and hosted-tool exclusions/hookscontrol, plugin hooks skipped until trusted, managed hooks immutablecodex-rs/hooks/schema/generatedrather than the current open-ended event mapMarketplace/install/policy
.claude-plugin/marketplace.jsoncompatibilityinterface, pluginpolicy.installation,policy.authentication, category, cache layout, and enable state inconfig.tomlcodex pluginadd/list/remove and marketplace add/list/upgrade/remove JSON contractsfeatures.plugins,features.hooks, deprecatedcodex_hooks, inline[hooks], and managedrequirements.tomlallow_managed_hooks_onlyand marketplacerestrict_to_allowed_sourcesbehaviorAcceptance
Related: #107 #100 #97 #101 #108 #133 #181