How It Works
Every sandbox runs tmux as an invisible session manager. Terminal sessions persist across disconnects — running processes, scroll history, and working directory survive browser refreshes, SSH reconnects, and IDE restarts. Three named sessions are created automatically:| Session | Created By | Attaches When |
|---|---|---|
vscode | code-server settings | Opening a terminal in the browser IDE |
term | ttyd (browser terminal) | Opening /_term/ in the browser |
ssh | .bashrc auto-attach | Connecting via SSH (VS Code Remote, Cursor, direct SSH) |
Session Persistence
tmux sessions persist as long as the container is running.| Event | Sessions Preserved |
|---|---|
| Browser tab closed and reopened | Yes |
| SSH disconnect and reconnect | Yes |
| IDE restart | Yes |
| Workload container restart | No |
| Suspend and resume | No |
Files, git repos, and installed tools persist across suspend/resume because
/root is backed by a volumeset. Only tmux sessions (running processes, shell history in memory) are lost.Working with tmux
The sandbox tmux configuration hides the status bar and unbinds the prefix key, so it stays invisible. You can still use tmux commands directly:Troubleshooting
Terminal shows old output after reconnect
Terminal shows old output after reconnect
This is expected. tmux preserves the scrollback buffer. Scroll down or press Enter to get to the current prompt.
Process still running after closing browser tab
Process still running after closing browser tab
tmux keeps processes alive when you disconnect. To stop a process, reattach and terminate it, or kill the session:
tmux kill-session -t term.Clipboard not working in browser IDE
Clipboard not working in browser IDE
Check browser permissions for the sandbox URL. The tmux config enables OSC 52 clipboard support.
Escape key has a delay in vim/neovim
Escape key has a delay in vim/neovim
The sandbox tmux config sets
escape-time to 0. Verify: tmux show-option -g escape-time. Reset if needed: tmux set -g escape-time 0.