The Codex backend hands one self-contained task to an unattended Codex session in the chat's workspace. It is one of the delegation backends DataMind Oda can use, and each run returns a single final answer. Choosing and enabling a delegation backend covers the other backends and how the choice is made.
codex. Bundles are managed on the Plugins page in the sidebar; see Plugins and bundles.subagent_codex. Oda reaches a backend only through a delegation tool you compose: installing the bundle makes the backend available on this computer, but the model can only use what a delegation tool offers. The delegation call itself is on Delegating work to subagents.Installing the bundle is not the same as connecting it: on its own it starts nothing, signs nothing in and grants no model access. Changes to which bundles a profile carries take effect the next time that profile starts.
| Setting | Default | What it does |
|---|---|---|
providerName | codex | The name the backend registers under and is reached by. |
model | unset | Passed unchanged to every run. When it is unset, the backend keeps its own model choice. |
env | empty | Extra environment entries for the run. |
permissionMode | never | How a run treats the requests it cannot bring to you; the three values are below. |
disposeGraceMs | 3000 | How long the app gives the run's process to end before it forces it to stop. |
A value the backend does not accept is refused when the backend loads, so a mistake shows up before the first delegation.
A delegated run has nobody to ask, so permissionMode decides in advance how it treats requests that would normally go to a person.
| Value | What the run does |
|---|---|
never (default) | Never asks for approval; a step that cannot run returns its failure to the run under the backend's own sandbox. |
approve-for-me | Routes permission requests through the backend's automatic review, with no person in the loop, and runs in a workspace-write sandbox. |
dangerously-bypass-approvals-and-sandbox | Bypasses approvals and sandbox checks for the run. This value must be selected explicitly. |
dangerously-bypass-approvals-and-sandbox turns the checks off entirely, so choose it only when you mean that.
Codex unattended decision (mode: <mode>; request: <request>; decision: <decision>): <reason>.aborted.run_in_background starts the run as a job and you collect the result later; see Background subagents and job collection.A failed run reports one safe fact: Product subagent failure (product: Codex; stage: <stage>; category: <category>). The line adds ; HTTP status: <n>, ; exit code: <n> or ; signal: <s> when the run observed one. The stage says where the run stopped, and the category says what kind of problem it was.
| Stage | Where the run stopped |
|---|---|
initialize | Before the run's process was up. |
thread-start | While starting the run's thread. |
turn-start | While starting the run's turn. |
turn | While the turn was working. |
process | The run's process ended or could not be observed. |
teardown | While cleaning up after the run. |
The run also reports these terminal errors:
subagent-codex: Codex completed without a final answer: the turn ended without a non-blank final answer, so the run settles as an error.subagent-codex: Codex turn ended with status <status>: <category>: the turn ended in a terminal state other than a clean completion; the status and category say which.A request from the backend that Oda does not recognise fails the run closed, so nothing is guessed. A context-window overrun is reported as the run hitting its token limit.
The fact is built to be safe to show: raw output, file contents, paths and environment values are kept out of it and stay in the app's own logs. What the chat shows around it, and what to do, is on Subagent failures and diagnostics.
Install its bundle in the profile Oda runs, then add a delegation tool for it with its own name, for example subagent_codex. Installing the bundle makes the backend available on this computer; Oda reaches it only through a delegation tool you compose. Choosing and enabling a delegation backend covers the general steps.
Keep never, the default, unless you have a reason to change it: Codex never asks for approval, and a step that cannot run returns its failure to the run under the backend's own sandbox. Choose approve-for-me when requests should go through the backend's automatic review, with the run limited to a workspace-write sandbox. Choose dangerously-bypass-approvals-and-sandbox only when you deliberately want approvals and sandbox checks skipped; it is never selected for you.
No. No mode creates a way to reach you: a run cannot ask you directly, and there is no per-call allow. Every request is answered unattended, following the selected mode, and each decision is recorded.
Usually one of two reasons. The chat may have no working directory, so the run has nowhere to work. Or the delegation asked for an extra this backend does not carry, such as a child model or a structured-output schema. In both cases nothing was started. Give the chat a workspace, drop the extra, or use a backend that supports it.
No. Each delegation is one fresh process and thread, with exactly one turn and no continuation, resume or pooling. When a task needs back-and-forth, use a backend that supports continuable subagents; Continuable subagents covers them.
Yes, and it is used as it is. The run relies on the account and configuration Codex already has on this computer; Oda does not discover models, rewrite model names or set a fallback. The run itself starts from the copy that ships with Oda, never from an installation of your own.
Set the model value in the backend's settings; it passes unchanged to every run. Leave it unset and the backend keeps its own model choice. A delegation that names a child model of its own is refused for this backend before the run starts; Choosing the model for a subagent covers that feature where it is available.
No. There is no wall-clock timeout: a run keeps going until it finishes, fails or is cancelled. A run you cancel settles as aborted.
Product subagent failure (product: Codex; . . . ) mean?It is the safe failure fact for a delegated run. The line names the stage where the run stopped and a category, and adds an HTTP status, an exit code or a signal when one was observed. The full list of what a failure can read like, and what to do next, is on Subagent failures and diagnostics.
subagent-codex: Codex completed without a final answer mean?The turn finished, but Codex produced no non-blank final answer, so the run settles as an error instead of a success. Read the diagnostic for where it stopped, and delegate again if the work still matters.
subagent-codex: Codex turn ended with status <status>: <category> mean?The turn ended in a terminal state other than a clean completion. The status and category name what happened; a context-window overrun, for example, is reported as the run hitting its token limit.