ExecOutput, not as Go errors. See Commands for usage examples.
Sandbox
The exec entry points live on*Sandbox.
sb.Exec()
Example
Example
ExecOutput.ExitCode, not as an error.
Parameters
ctxcontext.Contextcmdstringargs[]stringnil.opts…ExecOptionReturns
sb.Shell()
Example
Example
<configured-shell> -c command in the sandbox and collect its output. The shell comes from WithShell and defaults to /bin/sh. When loading an older native SDK library without configured-shell support, these methods return an unsupported-operation error with upgrade guidance. Blocks until the command exits. A convenience wrapper over Exec for shell one-liners.
Parameters
ctxcontext.Contextcommandstring-c.opts…ExecOptionReturns
sb.ExecStream()
Example
Example
*ExecHandle. The handle MUST be closed with Close when the stream is no longer needed. Nonblocking: the handle returns immediately and the stream starts in the background.
ctx controls only the start handshake; individual Recv calls take their own ctx. Non-zero exit codes are not errors, inspect ExecEventExited.
Parameters
ctxcontext.Contextcmdstringargs[]stringnil.opts…ExecOptionReturns
sb.ShellStream()
Example
Example
<configured-shell> -c command with streaming output. The shell comes from WithShell and defaults to /bin/sh. When loading an older native SDK library without configured-shell support, these methods return an unsupported-operation error with upgrade guidance. A convenience wrapper over ExecStream. Nonblocking: the handle returns immediately and the stream starts in the background.
Parameters
ctxcontext.Contextcommandstring-c.opts…ExecOptionReturns
ExecHandle
Returned by sb.ExecStream() · sb.ShellStream()
A handle to a running streaming execution and its events.h.ID()
Returns
h.TakeStdin()
Example
Example
nil if the session was not started with WithExecStdinPipe, or if TakeStdin was already called on this handle (matching the Node and Python SDKs). The caller is responsible for closing the sink when done writing; closing the sink without closing the exec handle is fine, they own different Rust-side resources.
Returns
nil if unavailable.h.Recv()
Example
Example
Kind == ExecEventDone when all events have been consumed. ctx controls the wait; cancellation causes Recv to return ctx.Err() immediately. The underlying Rust call may continue to completion in the background.
Parameters
ctxcontext.ContextReturns
h.Collect()
Example
Example
*ExecOutput. Equivalent to calling Recv in a loop and assembling the result. The handle should be closed after Collect returns.
Parameters
ctxcontext.ContextReturns
h.Wait()
Collect, stdout and stderr are discarded. The handle should be closed after Wait returns.
Parameters
ctxcontext.ContextReturns
h.Kill()
Parameters
ctxcontext.Contexth.Signal()
Example
Example
syscall (e.g. int(syscall.SIGTERM)).
Parameters
ctxcontext.Contextsignalintint(syscall.SIGTERM).h.Resize()
Example
Example
WithExecTTY(true), typically when relaying a terminal-size change from a remote client.
Resize may be called concurrently while another goroutine is blocked in Recv.
Parameters
ctxcontext.Contextrowsuint16colsuint16h.Close()
Example
Example
Signal or Kill first if you need to terminate it. Safe to call after ExecEventDone has been received.
ExecOutput
CollectedExec and ExecDefault output preserves arbitrary bytes, including invalid UTF-8 and NUL bytes. Use StdoutBytes() and StderrBytes() for binary data. The native response retains its legacy text fields and adds a base64 field only for a stream containing invalid UTF-8, so ordinary text keeps its existing response size and older readers remain compatible. With an older native library, the SDK falls back to the text fields; recovering invalid UTF-8 requires the updated native library. Collected responses must fit the 1 MiB FFI buffer after JSON and any base64 encoding; use streaming execution and consume events incrementally for larger output.
Returned by sb.Exec() · sb.Shell() · h.Collect()
Collected output and exit status. Non-zero exit codes are results, not Go errors.out.Stdout()
Returns
out.StdoutBytes()
Returns
out.Stderr()
Returns
out.StderrBytes()
Returns
out.ExitCode()
-1 if the guest did not report one (e.g. the process was killed by a signal).
Returns
-1.out.Success()
0.
Returns
true if ExitCode() is 0.ExecSink
Returned by h.TakeStdin()
io.WriteCloser.
sink.Write()
Example
Example
io.Writer. Uses context.Background() internally, there is no way to cancel a stuck write through this method alone.
Parameters
p[]byteReturns
sink.WriteCtx()
Write, but with a caller-controlled context, so a stuck stdin write can be cancelled.
Parameters
ctxcontext.Contextp[]byteReturns
sink.Close()
Example
Example
\x04 in canonical mode) when the interactive program needs one. Implements io.Closer.
Options
WithExecCwd()
Parameters
pathstringWithExecTimeout()
Example
Example
Kind == ErrExecTimeout. Sub-second precision rounds up to whole seconds; pass at least 1 second.
Parameters
dtime.DurationWithExecStdinPipe()
ExecHandle.TakeStdin.
WithExecTTY()
Example
Example
top. Default: false.
When enabled, the guest process runs with its stdin, stdout, and stderr connected to the PTY. Streaming sessions expose the combined terminal output through ExecEventStdout; they do not emit a separately attributable stderr stream. Collected output similarly places the combined stream in Stdout and leaves Stderr empty. Add WithExecStdinPipe() to write to the terminal programmatically, and use Resize to update its dimensions after the session starts.
Parameters
enabledbooltrue to allocate a pseudo-terminal.WithExecUser()
Parameters
userstringWithExecEnv()
Example
Example
Parameters
envmap[string]stringTypes
ExecEvent
Returned by h.Recv()
One event from a streaming exec session.Kind identifies which fields are populated.
ExecEventKind
Field of ExecEvent
ExecEvent carries.
ExecFailure
Field of ExecEvent
ExecEventFailed and ExecEventStdinError. See Error Handling for the kinds it carries (not_found, permission_denied, etc.) and how to branch on them.
ExecConfig
Populated by ExecOption
Configures a singleExec or ExecStream call. Most callers set fields through the WithExec* functional options; ExecConfig is exported for parity with the other SDKs’ config types.
ExecOption
Accepted by sb.Exec() · sb.Shell() · sb.ExecStream() · sb.ShellStream()
ExecConfig. Construct them with the WithExec* functions below.