Skip to content

fullsend run

Execute an agent locally in a sandbox. fullsend run resolves the agent harness, provisions a sandbox container, and runs the agent to completion.

Usage

bash
fullsend run <agent-name> [flags]

Flags

FlagDescription
--fullsend-dirPath to the .fullsend configuration directory
--runtimeOverride the agent runtime from config.yaml for this run (claude, pi, dummy); also FULLSEND_RUNTIME
--modelOverride the harness/agent model for this run (alias, model id, or provider/id on pi); also FULLSEND_MODEL
--effortOverride the harness effort level for this run (lowmax); also FULLSEND_EFFORT
--output-dirBase directory for run output (default: /tmp/fullsend)
--target-repoPath to the target repository
--fullsend-binaryPath to a Linux fullsend binary to copy into the sandbox
--env-fileLoad environment variables from a dotenv file (repeatable)
--no-post-scriptSkip post-script execution
--keep-sandboxSkip sandbox deletion after the run
--debug [filter]Enable agent runtime debug logging with optional category filter (e.g. "api,hooks")
--forgeForge platform to use (e.g. "github", "gitlab"); auto-detected from CI env vars when omitted
--offlineReject network fetches; only use cached remote resources
--max-depthMaximum dependency depth for transitive resolution (0 disables)

Plan block

At startup, fullsend run prints a plan block summarizing the resolved configuration:

Agent:     code
Role:      code
Model:     sonnet
Effort:    high
Runtime:   claude (from /path/to/.fullsend/config.yaml)
Image:     fullsend-sandbox:latest

The Runtime line shows which runtime was selected and the config source it was read from. When no config.yaml exists, the source reads default (config not found).

Runtime selection

The runtime for a run is resolved once, in this order: --runtime flag, FULLSEND_RUNTIME, the per-repo runtime: in config.yaml / .fullsend/config.yaml, then the built-in claude. The same order applies to the model (--model, FULLSEND_MODEL, harness model:, agent frontmatter; FULLSEND_PI_MODEL is a lower-precedence alias on pi) and to effort (--effort, FULLSEND_EFFORT, harness effort:). FULLSEND_FALLBACK_MODELS=a,b becomes Claude Code's --fallback-model; pi ignores it with a warning.

The plan block prints Runtime: <name> (from <source>) and, when an override applied, Model: <value> (from <source>); stderr carries runtime: selected "<name>" from <source> (and model: requested "<value>" from <source>) for scripts. An invalid override (unknown runtime, unknown effort level) fails before the sandbox is created.

bash
# try a repo's triage on pi with Gemini Flash, without touching its config
fullsend run triage --fullsend-dir . --target-repo ../repo \
  --runtime pi --model google-vertex/gemini-2.5-flash --effort medium

Output artifacts

Each run produces artifacts in the output directory:

FileDescription
metrics.jsonBehavioral metrics: tokens, cost, model, runtime, iterations
transcripts/Agent conversation transcripts
claude-debug.log or pi-debug.logDebug log (when --debug is set)

metrics.json fields

FieldDescription
runtimeRuntime that executed the run (e.g. claude, pi)
modelModel the provider reported using
requested_runtimeRuntime selected for the run (config file, or a --runtime/FULLSEND_RUNTIME override)
requested_modelModel the harness/agent requested
override_sourceWhere requested_model came from (--model flag, FULLSEND_MODEL, FULLSEND_PI_MODEL, harness, default)
runtime_sourceWhere requested_runtime came from (--runtime flag, FULLSEND_RUNTIME, the config file path, or default (config not found))
total_cost_usdTotal inference cost
num_turnsNumber of conversation turns
iterationsNumber of retry iterations
Content