Cana Desktop
Code, terminal and approvals
The agent reads, edits and runs code in your own project folder, you watch its terminals live beside your own, and you decide which edits and commands it may run without asking.
How it works
The idea in 5 steps
- 1
The agent works in your own folder
It searches your project, edits files, uses git and runs commands in the folder you opened. Your code stays as plain files in your own repository.
- 2
You choose how much it does alone
Each chat has a permission mode, from asking before anything runs to no prompts at all. You can change it at any point in the chat.
- 3
Anything it must ask about waits for you
An edit or command that needs your say appears as a card in the chat. You approve it, deny it, or allow that tool for the rest of the session.
- 4
Its terminals run in plain sight
Every terminal the agent starts is listed live next to your own, so you can watch the output or type an answer into a prompt.
- 5
Some places are always off limits
Credential folders, keychains, browser profiles and files such as keys and .env files are blocked in every mode, even with no prompts at all.
Tutorial
Step by step
Before you start
- Cana Desktop installed and signed in
- A project folder open in the chat (Cmd+O on a Mac, Ctrl+O on Windows)
- A project with tests you can run, ideally under Git
- 1
Pick a permission mode
In the message box, click the Permission mode button and choose Accept Edits.
You'll see: The button shows Accept Edits: file edits apply straight away, while commands and deletions still ask.
Tip: Use Ask to check every step, or Bypass All only in a project you can safely throw away.
- 2
Ask for the change
Describe the change and how to check it, for example "rename getUser to fetchUser everywhere, run the tests and fix anything that breaks". Click Send message.
You'll see: The agent searches the project and edits the files, showing each change in the chat.
- 3
Approve or deny its commands
When a card asks to run a command, read it and click Approve, or Deny to refuse.
You'll see: An approved command runs and its output appears in the chat; a denied one is skipped and the agent is told.
Tip: Open More approval options and choose Always Allow to stop being asked about that tool this session.
- 4
Watch its terminals
On the left rail, click More tools, then Terminal.
You'll see: Agent terminals lists every terminal the agent started, with live output, above Your terminals.
Tip: Click Pin to the rail next to Terminal in that menu to keep it one click away.
- 5
Use a terminal of your own
On the Terminal page, click New terminal and type your own commands, such as checking git status.
You'll see: A new shell in your project folder, under Your terminals, next to the agent's.
- 6
Find a command that failed
Open Command History from the terminal, type into Search commands..., or choose Failed or Saved.
You'll see: Earlier commands with their results; Failed shows only the ones that went wrong.
- 7
Review the changes in the editor
Click More tools, then Editor. The first time, click Download Editor (~470 MB).
You'll see: A full code editor with your files, search and git, where you can read every change the agent made.
Worked example
A safe rename across the whole project
A function is used in dozens of files and you want it renamed everywhere, with the tests proving nothing broke.
You type
Rename getUser to fetchUser everywhere in this project, including tests and imports. Then run the test suite and fix anything that fails. Tell me which files changed.
- 1.Permission mode: Accept Edits, so file edits apply but commands still ask
- 2.Paste the request and click Send message
- 3.Click Approve when it asks to run the tests
- 4.Follow the run under Agent terminals
Result: Every use of the function renamed, the tests run and passing, and a list of the changed files to review in the editor.
Troubleshooting
If something doesn't work
- I keep being asked to approve the same command
- Open More approval options on the card and choose Always Allow for that tool. To skip command prompts in every chat, open Settings, Agents and turn on Terminal commands under Auto-approve Actions.
- Every new chat starts in a mode I don't want
- Open Settings, Agents and change Default permission mode. New chats start there; each chat can still be changed from the message box.
- I can't see the Terminal or Editor on the rail
- They are in the More tools menu by default. Open it and use Pin to the rail to keep one on the rail.
- The agent says it can't open a file
- The file is in a protected location, such as a credentials folder or a .env file. That is blocked in every mode; if a value is needed, paste it yourself.
For you
An agent that works in your repo, with the guardrails you choose
The agent edits files, runs your build and tests, and uses git in your working tree. You set the level of autonomy per chat, watch its terminals live, and credentials stay off-limits in every mode.
Fix the failing test
"The checkout test fails on CI. Reproduce it, find the cause and make it pass." Watch the test run in its terminal.
Accept Edits for a prototype
Let file edits apply straight away on a throwaway branch while installs and deletions still ask.
Answer an interactive prompt
When a migration tool asks a question in the agent's terminal, type the answer straight into that pane.
What changes for developers: Real changes in your codebase at the pace you're comfortable with, and nothing touching your secrets.
Technical details
What it connects to, and the controls you have
- Permission modes
- Ask, Accept Edits, Research and Plan, and Bypass All, chosen per chat; a default can be set in Settings, Agents
- Auto-approve
- Settings can let chosen kinds of action, such as terminal commands, run without asking
- Protected locations
- SSH, cloud and other credential folders, keychains, browser profiles, password-manager data and files such as .env, keys and certificates are blocked in every mode, including Bypass All
- Terminals
- Several terminals at once, the agent's terminals listed live beside your own, and a searchable command history with filters for failed and saved commands
- Editor
- A full code editor with file tree, search, git and an open extension registry, downloaded the first time you open it (about 470 MB)
- Your code
- Plain files in your own folder and Git repository
Why Cana
What you get here
- Four permission modes, from approve-every-action to no prompts, chosen per chat
- Credential folders and secret files are blocked in every mode, including Bypass All
- The agent's terminals are visible live, and you can type into them
- A full code editor inside Cana, installed only when you ask for it
Keep exploring

Plan first, then build
Agree the approach before a single file changes

A browser the agent can see and use
Debug from the screen: send the element, error or request to the agent

Permissions and approvals
Let the agent move fast on the safe stuff and ask on the rest

Build an app from one prompt
Go from idea to a tested, running app without the boilerplate