Skip to content

Devin harness reference

DevinOpts configures the devin() harness factory for Devin CLI-backed turns. Pass it as devin(opts); every field is optional.

DevinOpts

OptionTypeDefaultWhen to set
binarystring'devin' (resolved via PATH)Worker environments with a minimal PATH; pass an absolute path.
modelDevinModelDevin CLI defaultPin a default model for all turns from this harness instance; per-turn opts.model wins.
defaultTimeoutMsnumber1_800_000 (30 min)Change the default per-turn timeout; per-call timeoutMs still overrides it.
sandboxbooleanfalseAlso pass Devin --sandbox when the worker has Devin's sandbox prerequisites installed.

DEFAULT_DEVIN_MODEL is swe-1.7-lightning, matching the Devin CLI model slug shown by devin --help/invalid-model output.

Access and permission mode

Orchard writes a per-turn Devin --agent-config file and runs Devin in print mode with --export so it can recover the session ID for repair/resume turns.

Orchard accessDevin flags and permissions
'read'--permission-mode auto; allow Read(cwd)/Read(cwd/**), deny matching Write scopes.
'edit'--permission-mode accept-edits; allow matching Read and Write scopes.

The built-in Devin harness intentionally does not expose Devin dangerous permission mode. sandbox: true adds Devin's OS-level exec sandbox flag, but Orchard leaves it off by default because Devin fails before the turn when host prerequisites such as socat are missing.

Structured output

Devin does not currently expose a JSON-schema print-mode flag in this wrapper. harnessCall therefore uses Orchard's prompt-and-repair JSON extraction path and resumes the same Devin session with --resume <session_id> when repair is needed.

Licensed under MIT