/work like any directory, and changes autosave to a durable private workspace WAL. The server workspace is created lazily on the first WAL checkpoint. Autosave never creates a Git commit or updates a branch; snapshots and promotion remain deliberate. Add --ro for a read-only view that creates no workspace and needs no cleanup.
Because durable WAL checkpoints, snapshots, operations, and mount heartbeats live on the server, your control plane can track workspace state across a fleet of sandboxes — see Observe Workspaces.
Install the file-system extension once on macOS. Linux needs no setup.
Choose a Mount
The command shape:Writable Mounts (the Default)
/work is an ordinary writable directory based on the branch tip — name a different base with agent-outputs:<ref-or-full-commit>. Writes enter a crash-safe local journal and autosave to private server WAL; the branch does not change while the agent works. Workspace mounts can take a subtree too; snapshots record paths relative to the repository root.
Autosave WAL
Writable mounts autosave every 30 seconds. Each autosave uploads changed content and advances the workspace’s durable WAL checkpoint, but creates no Git commit and moves no branch. This is the recovery layer for an agent run: another machine can resume through the latest server checkpoint, while the same machine can additionally recover a newer unsealed tail from its local journal. Autosave is intentionally separate from Git history. Usetl git snapshot when the current state should become an attributable workspace commit.
Read-Only Mounts
Add--ro for a view that creates no workspace and needs no cleanup:
agent-outputs:9f2a1c8e4d6b1a0f3c7e9d2b8a4f6c1e0d3b7a99//services/auth.
Snapshot Changes
Promote to a Branch
--merge to land a two-parent merge instead. See Merging Changes for conflict reports and the resolve loop.
Activity history shows who published the promotion and which workspace it came from.
Rebase a Workspace
When the branch has moved and you want the workspace replayed on top of it — a linear history instead of a merge — rebase it onto a target ref or commit:--fail-on-conflict to report conflicts without materializing markers into the workspace.
Check Status
--json for machine-readable output.
Observe Workspaces
Durable workspace state is server-side, so you can inspect a fleet without touching its sandboxes. List workspace WAL, snapshot, and attachment state first:tl git smartlog shows every branch, tag, workspace, and snapshot chain and how they sit relative to each other:
tl git log shows one mount’s own workspace snapshot chain; tl git smartlog --project widens the view to the whole project. The same graph is in the dashboard’s repository page, with each workspace’s snapshot chain and actor attribution. Every snapshot, promote, rebase, and merge is also a durable entry in the repository’s activity history — the audit trail of what your agents did, queryable long after the sandboxes are gone.
Live mounts also report a liveness heartbeat — that a mount exists, where it’s mounted, and that it’s still alive — so the control plane can tell which sessions are active. Fine-grained edits remain local until autosave; durable WAL checkpoints report progress without exposing every in-progress edit.
Reattach a Workspace
The mount path is disposable. The workspace is the resumable state behind it. Unmounting keeps the workspace by default:A workspace already mounted elsewhere mounts read-only if you mount it again. Unmount it there first to take writes.
Delete a Workspace
Delete the workspace while unmounting when its history is no longer needed:What a Mount Is Not
- Not a Git checkout. There is no
.gitdirectory inside a mount, andgitcommands do not run there. The verbs on this page are the interface — see Git or the tl CLI? for how they map onto Git habits.tl git cloneexists when you need a real clone. - Not auto-publishing. A repository mount autosaves to private workspace WAL, but autosave never creates a commit or changes a branch. For a shared directory whose autosave windows periodically advance the common state, use a file system.
- Not fully offline. Cached content and the crash-safe local journal can remain usable during a disconnection. Fetching uncached content and making work remotely durable require reconnection.
Next Steps
Merging Changes
Land workspaces on moved branches, resolve conflicts, and merge branches directly.
Architecture
Learn how promotion and merge conflict handling work internally.