# Codex — built-in provider manifest. # Authoring format for the def half. See packages/hive-agents/src/manifest.ts. manifestVersion: 2 # Written for the app that hands codex its trust for our hooks (hooks.trust). minAppVersion: '2026.10.2' id: codex label: Codex bin: codex enabled: true caps: promptDelivery: typed turnSignal: true resume: cwd supervise: human blockedDetection: true icon: viewBox: 0 0 24 24 attrs: fill: currentColor fillRule: evenodd shapes: - path: d: M8.086.457a6.105 6.105 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.117.117 0 00.107.029c1.408-.346 2.762-.224 4.061.366l.063.03.154.076c1.357.703 2.33 1.77 2.918 3.198.278.679.418 1.388.421 2.126a5.655 5.655 0 01-.18 1.631.167.167 0 00.04.155 5.982 5.982 0 011.578 2.891c.385 1.901-.01 3.615-1.183 5.14l-.182.22a6.063 6.063 0 01-2.934 1.851.162.162 0 00-.108.102c-.255.736-.511 1.364-.987 1.992-1.199 1.582-2.962 2.462-4.948 2.451-1.583-.008-2.986-.587-4.21-1.736a.145.145 0 00-.14-.032c-.518.167-1.04.191-1.604.185a5.924 5.924 0 01-2.595-.622 6.058 6.058 0 01-2.146-1.781c-.203-.269-.404-.522-.551-.821a7.74 7.74 0 01-.495-1.283 6.11 6.11 0 01-.017-3.064.166.166 0 00.008-.074.115.115 0 00-.037-.064 5.958 5.958 0 01-1.38-2.202 5.196 5.196 0 01-.333-1.589 6.915 6.915 0 01.188-2.132c.45-1.484 1.309-2.648 2.577-3.493.282-.188.55-.334.802-.438.286-.12.573-.22.861-.304a.129.129 0 00.087-.087A6.016 6.016 0 015.635 2.31C6.315 1.464 7.132.846 8.086.457zm-.804 7.85a.848.848 0 00-1.473.842l1.694 2.965-1.688 2.848a.849.849 0 001.46.864l1.94-3.272a.849.849 0 00.007-.854l-1.94-3.393zm5.446 6.24a.849.849 0 000 1.695h4.848a.849.849 0 000-1.696h-4.848z # A message typed while it works is read after its next tool call, in that turn: codex 0.163.0 # shows "Messages to be submitted after next tool call". steer: true # An image whose path is pasted alone is attached: codex 0.163.0 shows "[Image #1]". pastedImages: true options: - id: model label: Model flag: --model - id: mode label: Approval flag: --ask-for-approval default: on-request values: yolo: - --dangerously-bypass-approvals-and-sandbox - id: sandbox label: Sandbox flag: --sandbox default: workspace-write install: url: https://developers.openai.com/codex/cli command: "npm install -g @openai/codex" detect: # Only the live prompt area says what the agent is waiting for: its own streamed output # quotes files and plans full of "do you want … yes", and a screen-wide match reads those # as a question and notifies for each one. scope: kind: tail n: 20 rules: # What it is WAITING on is its own chooser or its own footer, on one line. Matching the # words a question is made of ("do you want", "[y/n]", "yes") anywhere on the screen read # the output it was streaming back as a question, over and over. - when: any: - seq: - any: ["\u203a", ">"] - run: space min: 1 - run: digit min: 1 - lit: '.' - run: space min: 1 at: start - line: - contains: press enter to confirm or esc to cancel - line: - contains: enter to submit answer - line: - contains: allow command? # Its hook review, which a first tile in a new profile always lands on. - line: - contains: hook needs review - line: - contains: hooks need review then: blocked - when: helper: hasInterruptPattern then: working - when: line: - startsWith: • - containsCS: Working ( then: working default: idle session: resume: args: - resume - '{id}' find: strategy: jsonl-header root: '{home}/.codex/sessions' cwdPath: payload.cwd idPath: payload.id require: type: session_meta # Codex runs a hook only once its user has trusted that exact command. The commands are the same # in every tile (the tile is read from the spawn environment), and the document carries codex's # trust for these hooks and no others, so it never asks about ours and still asks about any other. hooks: arg: -c format: toml stable: true trust: codex template: 'hooks={events}' events: SessionStart: emit: session.started timeout: 10 SessionEnd: emit: session.ended timeout: 3 UserPromptSubmit: emit: turn.started timeout: 10 Stop: hook: turnEnd timeout: 10 Interrupt: emit: turn.ended outcome: interrupted timeout: 3 PermissionRequest: emit: input.requested kind: permission timeout: 10 PostToolUse: emit: input.resolved timeout: 10 SubagentStart: emit: subagent.started timeout: 10 SubagentStop: emit: subagent.stopped timeout: 10 PreCompact: emit: compacting.started timeout: 10 PostCompact: emit: compacting.ended timeout: 10 assets: - name: hive-turn-end.cjs file: hive-turn-end.cjs hook: turnEnd produces: [turn.ended] # A tile Hivemind starts must not open on Codex's own update prompt, where a message sent to the # tile would answer it; the user updates Codex from a terminal instead. launch: hcp: true args: - -c - check_for_update_on_startup=false # Its fullscreen transcript takes the wheel for itself and then does nothing with it, so a # tile cannot be scrolled at all. In scrollback mode the terminal keeps the wheel and the # transcript lands in the tile's own scrollback. `/tui` switches it back. - -c - tui.fullscreen_transcript=false commands: builtIn: - name: "permissions" description: "Set what Codex can do without asking first" - name: "ide" description: "Include open files, current selection, and other IDE context" - name: "keymap" description: "Remap TUI keyboard shortcuts" - name: "vim" description: "Toggle Vim mode for the composer" - name: "setup-default-sandbox" description: "Set up the elevated agent sandbox (Windows only)" - name: "agents" description: "Open the agent command center" - name: "subagents" description: "Switch the active subagent thread" - name: "apps" description: "Browse apps (connectors) and insert them into your prompt" - name: "plugins" description: "Browse installed and discoverable plugins" - name: "hooks" description: "View and manage lifecycle hooks" - name: "clear" description: "Clear the terminal and start a fresh chat" - name: "rename" description: "Rename the current chat" - name: "archive" description: "Archive the current session" - name: "delete" description: "Permanently delete the current session" - name: "compact" description: "Summarize the visible chat to free tokens" - name: "copy" description: "Copy the latest completed Codex output" - name: "diff" description: "Show the Git diff, including files Git isn\u2019t tracking yet" - name: "exit" description: "Exit the CLI (same as /quit)" - name: "experimental" description: "Toggle experimental features" - name: "approve" description: "Approve one retry of a recent auto review denial" - name: "memories" description: "Configure memory use and generation" - name: "skills" description: "Browse and use skills" - name: "import" description: "Import Claude Code or Cursor setup, projects, and chats" - name: "feedback" description: "Send logs to the Codex maintainers" - name: "init" description: "Generate an AGENTS.md scaffold in the current directory" - name: "logout" description: "Sign out of Codex" - name: "mcp" description: "List configured Model Context Protocol (MCP) tools" - name: "mention" description: "Attach a file to the chat" - name: "model" description: "Choose the active model (and reasoning effort, when available)" - name: "fast" description: "Toggle a Fast service tier when the model catalog exposes one" - name: "plan" description: "Switch to plan mode and optionally send a prompt" - name: "goal" description: "Set, edit, pause, resume, view, or clear a task goal" - name: "ps" description: "Show background terminals and their recent output" - name: "stop" description: "Stop all background terminals" - name: "fork" description: "Fork the current chat into a new chat" - name: "side" description: "Start an ephemeral side chat" - name: "raw" description: "Toggle raw scrollback mode" - name: "resume" description: "Resume a saved chat from your session list" - name: "new" description: "Start a new chat inside the same CLI session" - name: "quit" description: "Exit the CLI" - name: "review" description: "Ask Codex to review your working tree" - name: "status" description: "Display session configuration and token usage" - name: "usage" description: "View account token usage or use a rate-limit reset" - name: "debug-config" description: "Print config layer and requirements diagnostics" - name: "statusline" description: "Configure TUI status-line fields interactively" - name: "title" description: "Configure terminal window or tab title fields interactively" - name: "theme" description: "Choose a syntax-highlighting theme" - name: "pets" description: "Choose or hide a terminal pet" - name: "tui" description: "Choose the terminal mode for the next launch" - name: "export" description: "Export the conversation as Markdown" - name: "recap" description: "Generate a summary of the current conversation" - name: "cd" description: "Change the session\u2019s working directory" - name: "pwd" description: "Show the working directory" - name: "worktree" description: "Start or continue a chat in a managed Git worktree" - name: "daemon" description: "Open background server controls" - name: "warnings" description: "View retained warnings and diagnostics" folders: - path: "{home}/.codex/prompts" prefix: "prompts:"