Skip to content

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.

Terminal window
desk move [PACK_ID] --to=TARGET [flags] [-- HARNESS_FLAGS]
Terminal window
# 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/bob

Pack 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.

Place agent options after --. Desk options, including --to, --project and --binary, go before it.

Terminal window
desk move --to=claude -- --model sonnet --effort high
desk move --to=codex -- --profile development --model gpt-6-astra
desk move --to=qoder -- --reasoning-effort high
desk move --to=bob -- --mode agent --max-turns 20

Desk 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 --:

Terminal window
desk move --to=codex --resume=AGENT_ID -- --model gpt-6-astra

An explicit preference replaces its saved value. Other saved preferences remain in effect. Repeat invocation-only options when needed.

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.

Use the target agent’s native continue or resume command with the moved workspace and HOME. The agent guides include complete examples.

Terminal window
desk ps -A
desk move --to=codex --resume=AGENT_ID

Only 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.

In Desk 0.3.0 and later, use a project-bound capability from desk secrets to supply model-provider credentials to the target process:

Terminal window
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.