desk move
Restore a workspace and launch another agent with handoff context. Without a pack
ID, Desk selects the latest saved pack for the current directory. It matches the
canonical absolute source path recorded in the pack metadata and orders by capture
time. If no matching pack exists, run desk pack first. New local changes are
not included in the saved pack until you pack again.
desk move [PACK_ID] --to=TARGET [flags] [-- HARNESS_FLAGS]Examples
Section titled “Examples”# Launch Codex from the latest pack for this directory.desk move --to=codex
# Use an existing pack.desk move PACK_ID --to=qoder
# Use an installed executable at an explicit path.desk move PACK_ID --to=bob --binary=/path/to/bobPack IDs and --resume agent IDs accept unique hexadecimal prefixes, including
the short IDs shown by ls and ps. Ambiguous prefixes require more characters.
All data comes from ~/.desk/store by default, or $DESK_HOME/store when set.
The target must be installed. Source and target must differ. Bob launch supports 2.0.2. A move always proceeds to launch; use desk pack to save only.
| Flag | Meaning |
|---|---|
--to |
Required target: claude, codex, qoder, or bob. |
--binary |
Installed target executable override. |
--project |
Directory whose latest saved pack to use; defaults to the current directory. |
--resume |
Launch a retained prepared Desk agent ID. |
--project cannot be combined with a pack ID or --resume. --resume cannot
be combined with a pack ID. The resume value is a Desk agent ID, not a native
conversation ID or a pack ID.
Harness options
Section titled “Harness options”Place agent options after --. Desk options, including --to, --project and
--binary, go before it.
desk move --to=claude -- --model sonnet --effort highdesk move --to=codex -- --profile development --model gpt-6-astradesk move --to=qoder -- --reasoning-effort highdesk move --to=bob -- --mode agent --max-turns 20Desk retains the exact restored session ID and working directory. Values are passed directly to the executable without shell evaluation. Quote values with spaces as you would for the agent itself.
| Target | Common supported options |
|---|---|
| Claude | --model, --effort, --agent, --permission-mode, --allowed-tools, --tools, --append-system-prompt, --mcp-config, --settings, --verbose |
| Codex | --model / -m, --profile / -p, --sandbox / -s, --ask-for-approval / -a, --add-dir, --search, --no-alt-screen |
| Qoder | --model / -m, --reasoning-effort, --thinking, --permission-mode, --tools, --settings, --debug / -d |
| Bob | --mode, --max-cost, --max-turns, --log-level, --disable-mcp, --disable-subagents, --disable-tool-groups, --auto-approve |
Options follow the selected agent’s grammar. For example, Codex’s -p selects a
profile, while Claude and Qoder use -p for noninteractive output. Desk accepts
supported interactive options and rejects unknown options, positional prompts,
subcommands, and flags that select another session, workspace, configuration home,
or execution mode. Validation happens before restoring the pack. Codex --config
overrides are limited to model, model_reasoning_effort,
model_reasoning_summary, and model_verbosity.
The launch summary shows reusable preferences and redacts other argument values. Desk remembers model, profile, mode, and supported reasoning or agent-selection preferences in the managed agent record. Permission switches, prompts, inline settings, and other free-form arguments apply only to that invocation. The target agent controls its own logging and configuration persistence.
For an interrupted move that remains prepared, supply overrides after --:
desk move --to=codex --resume=AGENT_ID -- --model gpt-6-astraAn explicit preference replaces its saved value. Other saved preferences remain in effect. Repeat invocation-only options when needed.
Where the target works
Section titled “Where the target works”For all harnesses, moving from the packed project directory (or selecting it with
--project) keeps the existing working directory and its current files. The
handoff still uses the saved pack, and the target session uses your normal HOME and existing login. An
explicit pack moved from another directory restores a separate workspace.
For compact packs, available in Desk 0.2.6 and later, a new workspace is rebuilt from the exact Git commit and saved local changes. This needs access to the repository; the local-directory case skips fetching and leaves current files untouched. See Git restoration for destination authentication and unavailable-commit handling.
Desk prints the target’s workspace and HOME. The original source stays in place.
Archived source settings and sessions stay in Desk’s per-move .desk-handoff
directory, with a report and readable transcript when available.
The target inherits your normal environment and existing local login. All four agents resume restored text history when available. If readable history is unavailable, Desk supplies handoff context. Archived settings and permissions are not activated. Existing agent authentication is used from the local environment.
Resume work after exiting the agent
Section titled “Resume work after exiting the agent”Use the target agent’s native continue or resume command with the moved workspace and HOME. The agent guides include complete examples.
Recover an interrupted move
Section titled “Recover an interrupted move”desk ps -Adesk move --to=codex --resume=AGENT_IDOnly an entry still marked prepared is eligible. The requested target must match
the saved entry. Recovery does not repeat an already attempted launch.
For starting, failed or exited entries, inspect the retained workspace and
HOME. Move the original pack again to create a fresh attempt, or stop writers and
capture the working workspace to preserve newer progress.
Approved startup credentials
Section titled “Approved startup credentials”In Desk 0.3.0 and later, use a project-bound capability from desk secrets to supply model-provider credentials to the target process:
desk move --to=codex --secrets=model-provider --secret-reason="Continue the devbox investigation"Desk prepares the target, then waits for your Secrets dashboard approval before
starting it. Denial or failed retrieval leaves the target prepared and does not
consume its launch attempt. Resume it with --resume=AGENT_ID and explicitly
supply --secrets again. Every attempt requires a new approved retrieval; no
values or capability selection are saved as launch preferences.
The receiving process can read and disclose its environment. This supplies startup credentials, not an isolated broker or a hot-rotation mechanism.