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.
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:
| Item | Location |
|---|---|
| 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.
| Feature | CLI | Desktop | Desktop notes |
|---|---|---|---|
| Model and reasoning effort | Yes | Yes | Model picker or Settings > Agent |
| Permission modes | Yes | Yes | See Permission modes |
| Queued follow-up messages | Yes | Yes | Delivered to the agent while it works |
| Plans | Yes | Yes | Plan view |
| Fork a chat | Yes | Yes | /fork |
| Rewind to a checkpoint | Yes | Yes | /rewind opens a list of checkpoints |
| Resume past chats | Yes | Yes | History in the sidebar |
| Subagents | Yes | Yes | Each subagent shows an activity card |
| Background tasks | Yes | Partial | Shown in the chat, but you can't stop them |
| Scheduled tasks | Yes | No | Use the CLI |
| Skills | Yes | Yes | Settings > Skills |
| MCP servers | Yes | Yes | Settings > MCP for user-level servers |
| Taste | Yes | Yes | Settings > Taste |
| Custom commands and mods | Yes | Yes | Asks before it runs a project's mods |
| Hooks | Yes | Yes | Hook output shows in the chat |
| Git worktrees | Yes | Partial | Create isolated worktree in the chat menu |
/design | Yes | Yes | Design mode is in the Browser view |
/goal | Yes | Yes | Goal status shows in the chat |
| IDE context | Yes | Yes | Settings > Agent |
| Remote control | Yes | Yes | /rc or Settings > Remote control |
| Headless mode | Yes | No | Use cmd -p |
| Providers and BYOK | Yes | No | Set up BYOK providers in the CLI |
| Share a chat | Yes | No | Use /share in the CLI |
| Git changes and diffs | No | Yes | Changes view |
| Commit and push | No | Yes | Ship menu |
| File browser and editor | No | Yes | Files view |
| Local browser preview | No | Yes | Browser view |
| OS notifications | No | Yes | When a chat needs input or a run finishes |
| Custom keybindings | Yes | Yes | Settings > Shortcuts |
Type / in either app to open the command menu. The Slash Commands reference describes each command.
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 command | Desktop control |
|---|---|
/resume, /sessions | History in the sidebar |
/effort | Model picker or Settings > Agent |
/theme | Settings > Appearance |
/config | Settings > Advanced |
/compact-mode | Settings > Agent |
/hotkeys | Settings > Shortcuts |
/learn-taste | Settings > Taste |
/worktree | Create isolated worktree in the chat menu |
/update, /changelog | Automatic updates, applied when you restart |
/exit, /quit | Close the window |
These commands aren't in Desktop yet. Run them from the CLI in the same project folder.
Both apps use the same permission modes. Desktop gives them different names.
| CLI | Desktop | Behavior |
|---|---|---|
default | Ask for approval | Asks before edits and commands |
accept-edits | Auto-accept edits | Applies edits, asks before risky commands |
plan | Plan mode | Plans without changing files |
yolo | Full access | Runs edits and commands without asking |
dont-ask | Not available | Runs 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 -pruns 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--skillset 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, andcmd updatemanage Command Code without opening a chat. /connectandcmd loginadd other model providers and BYOK keys. See BYOK Providers.Ctrl+Gopens the prompt in your external editor, andCtrl+Bopens 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+Kon macOS orCtrl+Kon 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 --resumein the project folder and select the chat.cmd --continueopens the most recent chat.
Desktop doesn't list headless cmd -p runs in History.
- Read the Desktop App guide.
- Browse the CLI reference and Slash Commands reference.
- Report a missing Desktop feature on GitHub.