Skip to main content

ExecCommand

Struct ExecCommand 

Source
pub struct ExecCommand { /* private fields */ }
Expand description

Run Codex non-interactively (codex exec <prompt>).

This is the primary command for programmatic use. It supports the full range of exec flags: model selection, sandbox policy, approval policy, images, config overrides, feature flags, JSON output, and more.

§Example

use codex_wrapper::{Codex, CodexCommand, ExecCommand, SandboxMode};

let codex = Codex::builder().build()?;
let output = ExecCommand::new("fix the failing test")
    .model("o3")
    .sandbox(SandboxMode::WorkspaceWrite)
    .ephemeral()
    .execute(&codex)
    .await?;
println!("{}", output.stdout);

Implementations§

Source§

impl ExecCommand

Source

pub fn new(prompt: impl Into<String>) -> Self

Create a new exec command with the given prompt.

Source

pub fn from_stdin() -> Self

Read the prompt from stdin (-).

Source

pub fn config(self, key_value: impl Into<String>) -> Self

Override a config key (-c key=value).

May be called multiple times to set several keys.

Source

pub fn enable(self, feature: impl Into<String>) -> Self

Enable an optional feature flag (--enable <feature>).

May be called multiple times.

Source

pub fn disable(self, feature: impl Into<String>) -> Self

Disable an optional feature flag (--disable <feature>).

May be called multiple times.

Source

pub fn image(self, path: impl Into<String>) -> Self

Attach an image to the prompt (--image <path>).

May be called multiple times to attach several images.

Source

pub fn model(self, model: impl Into<String>) -> Self

Set the model to use (--model <model>).

Panics if model is an empty string.

Source

pub fn oss(self) -> Self

Use the OSS model tier (--oss).

Source

pub fn local_provider(self, provider: impl Into<String>) -> Self

Use a local model provider (--local-provider <provider>).

Source

pub fn sandbox(self, sandbox: SandboxMode) -> Self

Set the sandbox policy (--sandbox <mode>).

Source

pub fn approval_policy(self, policy: ApprovalPolicy) -> Self

Set the approval policy (--ask-for-approval <policy>).

Source

pub fn profile(self, profile: impl Into<String>) -> Self

Select a named configuration profile (--profile <name>).

Source

pub fn full_auto(self) -> Self

Run in full-auto mode — no approval prompts (--full-auto).

Source

pub fn dangerously_bypass_approvals_and_sandbox(self) -> Self

Bypass all approval prompts and sandbox restrictions.

Passes --dangerously-bypass-approvals-and-sandbox. Use with caution.

Source

pub fn cd(self, dir: impl Into<String>) -> Self

Change the working directory before running (--cd <dir>).

Source

pub fn skip_git_repo_check(self) -> Self

Skip the git repository check (--skip-git-repo-check).

Source

pub fn add_dir(self, dir: impl Into<String>) -> Self

Add an extra directory to the context (--add-dir <dir>).

May be called multiple times.

Source

pub fn search(self) -> Self

Enable live web search (--search).

Source

pub fn ephemeral(self) -> Self

Run in ephemeral mode — no session is persisted (--ephemeral).

Source

pub fn output_schema(self, path: impl Into<String>) -> Self

Require output to conform to a JSON schema (--output-schema <path>).

Source

pub fn color(self, color: Color) -> Self

Control terminal color output (--color <mode>).

Source

pub fn progress_cursor(self) -> Self

Show a progress cursor while the command runs (--progress-cursor).

Source

pub fn json(self) -> Self

Emit JSON Lines output (--json).

When set, stdout will contain one JSON object per line. Use execute_json_lines to parse the events automatically (requires the json feature).

Source

pub fn output_last_message(self, path: impl Into<String>) -> Self

Write the last assistant message to a file (--output-last-message <path>).

Source

pub fn retry(self, policy: RetryPolicy) -> Self

Override the retry policy for this command.

Takes precedence over the client-level policy set on Codex.

Source

pub async fn stream<F>(&self, codex: &Codex, handler: F) -> Result<()>
where F: FnMut(JsonLineEvent),

Stream JSONL events from the command, invoking handler for each parsed JsonLineEvent as it arrives.

Automatically appends --json if not already set. Requires the json feature.

§Example
use codex_wrapper::{Codex, ExecCommand, JsonLineEvent};

let codex = Codex::builder().build()?;
ExecCommand::new("what is 2+2?")
    .ephemeral()
    .stream(&codex, |event: JsonLineEvent| {
        println!("{}: {:?}", event.event_type, event.extra);
    })
    .await?;
Source

pub async fn execute_json_lines( &self, codex: &Codex, ) -> Result<Vec<JsonLineEvent>>

Execute the command and parse the output as JSON Lines events.

Automatically appends --json if not already set. Requires the json feature.

Trait Implementations§

Source§

impl Clone for ExecCommand

Source§

fn clone(&self) -> ExecCommand

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl CodexCommand for ExecCommand

Source§

type Output = CommandOutput

The type returned on success.
Source§

fn args(&self) -> Vec<String>

Build the argument list for this command.
Source§

async fn execute(&self, codex: &Codex) -> Result<CommandOutput>

Execute the command against the given Codex client.
Source§

impl Debug for ExecCommand

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more