CLI vs Desktop App

The Command Code CLI and the Command Code Desktop App run the same agent. Both apps read the same settings, save chats to the same folder, and load the same skills, MCP servers, Taste, and custom commands. The CLI runs in your terminal. Desktop adds Changes, Files, Terminal, Plan, and Browser views next to the chat.

You can use both apps on the same project. An interactive chat started in one app appears in the other.

Note

Command Code Desktop is in beta. Some CLI features aren't in Desktop yet.

Use the CLI to work in your own terminal, script runs with headless mode, start sessions with flags such as --worktree, or connect your own model providers.

Use Desktop to review diffs and plans next to the chat, preview a local app with Design mode, or commit and push from the app.

Desktop includes the Command Code agent, so you don't need to install the CLI to use it. Both apps read and write these files:

ItemLocation
Sign-in~/.commandcode/auth.json
Settings~/.commandcode and <project>/.commandcode
Chats~/.commandcode/projects
MCP servers~/.commandcode/mcp.json and <project>/.mcp.json
Taste~/.commandcode/taste and <project>/.commandcode/taste
Skills~/.commandcode/skills and <project>/.commandcode/skills
Custom commands~/.commandcode/commands and <project>/.commandcode/commands
Mods~/.commandcode/mods and <project>/.commandcode/mods
Worktrees~/.commandcode/worktrees

Keybindings aren't shared. The CLI reads ~/.commandcode/keybindings.json, and Desktop uses Settings > Shortcuts. Desktop keeps window layout and other app state in its own app data folder.

FeatureCLIDesktopDesktop notes
Model and reasoning effortYesYesModel picker or Settings > Agent
Permission modesYesYesSee Permission modes
Queued follow-up messagesYesYesDelivered to the agent while it works
PlansYesYesPlan view
Fork a chatYesYes/fork
Rewind to a checkpointYesYes/rewind opens a list of checkpoints
Resume past chatsYesYesHistory in the sidebar
SubagentsYesYesEach subagent shows an activity card
Background tasksYesPartialShown in the chat, but you can't stop them
Scheduled tasksYesNoUse the CLI
SkillsYesYesSettings > Skills
MCP serversYesYesSettings > MCP for user-level servers
TasteYesYesSettings > Taste
Custom commands and modsYesYesAsks before it runs a project's mods
HooksYesYesHook output shows in the chat
Git worktreesYesPartialCreate isolated worktree in the chat menu
/designYesYesDesign mode is in the Browser view
/goalYesYesGoal status shows in the chat
IDE contextYesYesSettings > Agent
Remote controlYesYes/rc or Settings > Remote control
Headless modeYesNoUse cmd -p
Providers and BYOKYesNoSet up BYOK providers in the CLI
Share a chatYesNoUse /share in the CLI
Git changes and diffsNoYesChanges view
Commit and pushNoYesShip menu
File browser and editorNoYesFiles view
Local browser previewNoYesBrowser view
OS notificationsNoYesWhen a chat needs input or a run finishes
Custom keybindingsYesYesSettings > Shortcuts

Type / in either app to open the command menu. The Slash Commands reference describes each command.

/clear /new /compact /context /design /feedback /fork /goal /help /mcp /mode /model /plan /plans /plan-review /pr-comments /rc /rename /review /rewind /skills /taste /todos /usage

Custom commands, mod commands, and skill commands also work in both apps. In Desktop, /help opens the command palette, /mcp, /skills, and /taste open their page in Settings, and /usage opens the same page as Settings > Usage.

These CLI commands aren't in the Desktop command menu. Use the Desktop control in the second column instead.

CLI commandDesktop control
/resume, /sessionsHistory in the sidebar
/effortModel picker or Settings > Agent
/themeSettings > Appearance
/configSettings > Advanced
/compact-modeSettings > Agent
/hotkeysSettings > Shortcuts
/learn-tasteSettings > Taste
/worktreeCreate isolated worktree in the chat menu
/update, /changelogAutomatic updates, applied when you restart
/exit, /quitClose the window

These commands aren't in Desktop yet. Run them from the CLI in the same project folder.

/add-dir /agents /clone /connect /copy /export /ide /import /init /learn /login /logout /memory /name /reload /session-file /share /status /terminal-setup /trace /tree /unshare /upgrade /extra

Both apps use the same permission modes. Desktop gives them different names.

CLIDesktopBehavior
defaultAsk for approvalAsks before edits and commands
accept-editsAuto-accept editsApplies edits, asks before risky commands
planPlan modePlans without changing files
yoloFull accessRuns edits and commands without asking
dont-askNot availableRuns only pre-approved calls, denies others

In Desktop, Shift+Tab cycles the first three modes. To switch to Full access, choose it from the mode menu in the composer or type /mode full-access, then confirm. Desktop rejects /mode yolo and /mode bypass.

See Permissions for rules and how Command Code decides each tool call.

  • cmd -p runs a prompt without the interactive UI and prints text or JSON for scripts and CI. See Headless mode.
  • Start-up flags such as --resume, --continue, --worktree, --model, --permission-mode, --add-dir, and --skill set up a session before it starts. See the CLI reference.
  • Subcommands such as cmd config, cmd mcp, cmd taste, cmd skills, cmd mods, cmd login, and cmd update manage Command Code without opening a chat.
  • /connect and cmd login add other model providers and BYOK keys. See BYOK Providers.
  • Ctrl+G opens the prompt in your external editor, and Ctrl+B opens the background tasks panel.

  • The Changes, Files, Terminal, Plan, and Browser views open next to the chat. See Workbench.
  • The Ship menu commits, commits and pushes, or pushes the project's changes.
  • Design mode sends an element you select in a local preview to the chat. See Browser and design mode.
  • Desktop shows an OS notification when a chat needs input or a run finishes, and plays a sound when a chat needs input.
  • Cmd+K on macOS or Ctrl+K on Windows and Linux opens the command palette to find commands and files.
  • Open in new window in the chat menu opens a chat in a separate window.

Desktop calls a conversation a chat, and the CLI calls it a session. Both are the same transcript file in ~/.commandcode/projects, so you can continue one in either app.

  • To continue a CLI chat in Desktop, open the project in Desktop and select the chat under History in the sidebar.
  • To continue a Desktop chat in the CLI, run cmd --resume in the project folder and select the chat. cmd --continue opens the most recent chat.

Desktop doesn't list headless cmd -p runs in History.