Skip to main content
When a workflow runs in a Daytona sandbox, you can SSH into the sandbox to inspect files, run commands, and debug issues — all while the workflow is still executing.
SSH access is only available with the Daytona sandbox provider. Local, Docker, and exe.dev sandboxes do not support SSH access.

Connecting to a run’s sandbox

Use fabro sandbox ssh to connect to the Daytona sandbox from any completed or in-progress run:
fabro sandbox ssh <run-id>
Fabro creates temporary SSH credentials and connects directly. Use --print to print the SSH command instead of connecting, or --ttl to set the credential expiry:
fabro sandbox ssh <run-id> --print
fabro sandbox ssh <run-id> --ttl 120

Keeping the sandbox alive

By default, Daytona sandboxes are destroyed when the workflow finishes. To keep the sandbox running after the workflow completes — so you can continue debugging — pass --preserve-sandbox:
fabro run workflow.fabro --sandbox daytona --preserve-sandbox
Without --preserve-sandbox, the SSH session is terminated when the run ends and the sandbox is cleaned up. You can also set auto_stop_interval in your run config to control how long an idle sandbox stays alive:
run.toml
[run.sandbox]
provider = "daytona"
preserve = true

[run.sandbox.daytona]
auto_stop_interval = 60

What you can do over SSH

Once connected, you have a full shell inside the sandbox VM:
  • Inspect the working directory — Agent file changes are at /home/daytona/workspace
  • Run commands — Execute tests, check logs, inspect process state
  • Edit files — Make manual fixes while the workflow is paused at a human gate
  • Debug failures — Reproduce and diagnose issues in the exact environment where they occurred

Credential lifetime

SSH credentials are temporary and expire after 60 minutes by default. With fabro sandbox ssh, you can set a custom TTL with --ttl <MINUTES>. If your session expires, run fabro sandbox ssh again to get fresh credentials.

Limitations

  • SSH access is Daytona-only.
  • SSH access is currently available only from the CLI. The API server and web UI do not yet expose an SSH endpoint.