Agents
Composer
Write prompts, mention files, run commands, attach files and images, and queue or steer follow-ups while an agent works.
The composer is the card at the foot of every chat. You write the prompt there, bring in files, code and screenshots, and choose the model and what the agent may do. It keeps an unsent draft for each chat.
The composer card
The prompt starts empty with “Do anything” and grows as you type, up to a quarter of the window before it scrolls. Along its foot:
- + opens the palette of skills, context and extensions. See The + palette.
- The access chip says what the agent may do: Full access, Ask or Plan. Once the chat has started, its menu also sets the approval level, which for Cursor decides whether it writes its edits without asking. See Modes & approvals.
- A ring for the context window, once the provider has reported usage. It fills as the context does, turning orange at 75% and red at 90%. Point at it for the count, or click it for the details and your plan’s limit. With Codz Pro, the details also add up the chat’s tokens and cost so far.
- The model chip: the model and its effort, with a bolt when fast mode is on. See Models & loadout.
- On a Claude Code chat you come back to after its prompt cache has expired (about an hour on a subscription, five minutes on an API key) with at least 200,000 tokens in context, a Compact chip with the token count appears beside the send button. While it is armed, sending summarizes the history with
/compactfirst, then sends your message, instead of paying to re-read the whole conversation uncached. Click the chip to switch it to Keep and send with the full history. Compact idle threads in the Claude provider’s settings (Settings ▸ Models & providers) chooses this behaviour: when you return, just before the cache expires, or never. However a compaction starts — the chip, the timer, or/compactitself — it reads in the transcript as one line saying why it ran and what it saved, not as a message of yours. Auto-compact after, in the same settings, separately sets the context size at which Claude compacts its own history mid-conversation. - The send button. While a turn runs it becomes a stop button, with a second button beside it for a follow-up once you type one.
On a new chat, a bar above the card holds the project, where the chat runs (Local or Isolated) and the branch it starts from. Once the chat exists, these show in its header instead.
When the project has uncommitted changes, a files changed pill with the line counts floats above the composer; click it to open the Git panel. Turn progress and errors appear in the transcript; an approval request takes the composer’s place until you answer it. The composer shows specific recovery messages when an action is needed.
Send a message
↩ sends and ⇧↩ starts a new line. To make ↩ always start a new line and send with ⌘↩ instead, set Settings ▸ Agent & composer ▸ Submit messages to ⌘ Return. The same setting is Send message in Settings ▸ Keyboard shortcuts, where Restore shortcut defaults puts ↩ back.
The send button dims when the message can’t go yet: the chat has no project, its provider isn’t ready, or the chat is still loading. With nothing typed it stays lit, and clicking it puts the cursor in the prompt.
Suggested next messages
In Claude Code and ChatGPT chats, the empty composer can show a suggested next message after a reply or when you reopen a chat. Suggestions come from the provider and may not appear for every reply. Turn them on or off with Prompt suggestions in that provider’s settings.
Press Tab, → or plain ↩ to put the suggestion into your draft. You can edit it before sending. Typing your own message hides the suggestion; clearing the draft shows it again.
Mentions
Type @ anywhere in the prompt to pick a file or folder from the project. Keep typing to filter; the list names the project, and says “Indexing project…” while Codz reads it for the first time.
- Picking a file writes
@and its path for Claude Code, which reads the file in for you, and the plain relative path for every other provider. - Picking a folder keeps the list open inside it, so you can go on to a file.
- A path with spaces goes in backticks, so it stays one reference.
An @ only opens the list at the start of a word, so an email address in your prompt stays text.
Commands
Type / at the start of the prompt, or at the start of any word after it, for commands. The list shows the same sections as the + palette, then every other command under Commands. Keep typing to narrow it: the best match is selected, and ↩ chooses it.
A command typed after your words applies to that prompt. Type Fix the login redirect /plan and press ↩: /plan leaves the prompt, the chat switches to Plan, and the words stay for you to send. A slash inside a word, or in a path such as /usr/bin, opens nothing, so paths are safe.
| Command | What it does |
|---|---|
/model | Opens the model picker |
/ask, /plan, /agent | Switches the chat to Ask, Plan or Full access |
/init | Writes a prompt asking the agent to draft an AGENTS.md for the project |
/review | Writes a prompt asking the agent to review your uncommitted changes |
/debug | Writes a prompt asking the agent to find the root cause before changing anything |
/new | Starts a new chat |
/goal | Sets or edits the chat’s goal |
/files, /terminal, /git | Opens that panel in the rail |
/browser, /computer | Opens the Browser or Computer panel, while it is turned on in Settings ▸ Browser & tools |
/commit | Opens the Git panel and stages everything, ready for a commit message |
/history | Opens the Git panel’s commit history |
/branch | Creates a branch |
/compact | Asks the agent to compact its context and free space |
/init, /review and /debug only fill in the composer. After other words, the text starts a paragraph of its own. Nothing is sent until you press ↩, so you can edit the text first. The commands from /new down appear once a chat exists, and /compact only in Claude Code and ChatGPT chats.
Once a chat has started, the list also includes the commands and skills its provider reported, marked Provider command. Picking one writes it at the start of the prompt, where the provider reads it, and the provider runs it when you send. Claude Code and Cursor report theirs.
The + palette
+ opens a searchable list (“Search skills, context, extensions…”). Nothing is selected until you type, which selects the best match, or press ↑ or ↓ to move; ↩ chooses. Pointing at a row selects it only while the pointer is over it.
| Section | What it holds |
|---|---|
| Skills | Plan, Debug, Review changes, Ask and Write AGENTS.md, the same as their / commands, and any skills the provider reported |
| Context | Files and Folder to attach, Changed files to attach everything Git reports as modified, Screenshot to capture part of the screen, and Remove all attachments |
| Extensions | The MCP servers, plugins, subagents and instruction files your agents load for this project, with a count. Open one to see each item, and choose an item to show its file in the Finder |
| Environment | On a new chat only: Local or Isolated |
⌫ in an empty search goes back out of an opened list. Agent extensions describes what the Extensions lists show.
Attachments and images
Add files to a message in any of these ways:
- Paste an image or a copied file with ⌘V.
- Drag files or folders onto the chat.
- Use Files, Folder, Changed files or Screenshot in the + palette.
Attachments sit above the prompt, inside the card. An image shows as a square thumbnail; click it to preview it. Another file shows as a tile with a preview (PDF, Word, PowerPoint and Excel files get a real one); click it to open the file in its app. Point at a tile for the ✕ that removes it. A single paste or drop brings in up to 12 items, and a pasted image can be up to 16 MB.
PNG, JPEG, GIF and WebP files are sent as images. Claude Code, ChatGPT and OpenRouter receive them as pictures, and so does Cursor when its CLI accepts images; other providers get the file’s path, which the agent can open itself. Every other file is sent as its path, listed after your message for the agent to read. Images you attach appear as thumbnails above your message in the transcript.
Code references
To point the agent at particular lines, select them in the Files panel’s editor and press ⌘L, or click Add to Chat on the selection. A chip appears above the prompt with the file’s name and lines, such as “L24-30”; point at it for the full path. When you send, the file’s path, the line range and the code itself go after your message. Adding the same lines twice keeps one chip, and ⌫ at the very start of the prompt removes the last chip. Add to Side Chat sends the lines to the side chat instead.
Selecting text in the transcript offers three actions:
- Add to chat quotes the selection into your draft.
- More details sends the quote at once, asking the agent to tell you more.
- Ask in side chat opens the side chat with the selection.
While the agent works
While a turn runs, the prompt reads “Send a follow-up”. What happens to a message you send then depends on Settings ▸ Agent & composer ▸ Follow-up behavior:
- Queue for next turn, the default: the message waits in Up next above the composer, and messages go in order as each turn ends (“Runs automatically”). Open Up next to move a message earlier or later, Edit in composer or Remove from queue.
- Interrupt and continue: Codz stops the running turn and sends the newest message.
With Claude Code and ChatGPT, ⌘↩ hands a typed message straight to the running turn instead, which the agent reads as it works. This works while ↩ is your send key; if the provider can’t take the message mid-turn, it joins the queue.
Drafts
Each chat keeps its own unsent text, and so does a new chat. Switch to another chat and back, or quit Codz, and the draft is still there. Attachments and code references aren’t part of a draft: switching chats clears them.
Custom instructions
Settings ▸ Agent & composer has three ways to shape every turn, whichever provider runs it:
- Personality: Friendly, Pragmatic (the default) or None. It sets the tone of answers without changing technical judgment.
- Custom instructions: text added to every new turn. Never put secrets here.
- Use local memory, off by default: turn it on to add the notes in Remember to future turns. The notes stay in this Mac’s preferences, and Clear memory empties them.
The agents’ own instruction files, such as AGENTS.md and CLAUDE.md, are covered in Agent extensions.
Keyboard shortcuts
| Key | In the composer |
|---|---|
| ↩ | Send (or a new line, with ⌘ Return as the send key) |
| ⇧↩ | New line |
| ⌘↩ | Approve a waiting action, or steer a running turn in Claude Code and ChatGPT |
| Esc | Close a list or picker, deny a waiting action, or stop the running turn |
| ⇧Tab | Switch between Ask, Plan and Full access |
| Tab | Accept a suggested next message, otherwise move out of the composer |
| ⌥Tab | Type a tab |
| ⌘L | Put the cursor in the composer from anywhere in the chat |
Troubleshooting
A card stands where the composer was. The agent is waiting on an approval. Answer it, or type a message and press ↩ to deny it with that message; the composer comes back with your draft. See Modes & approvals.
/compact isn’t in the list. It is offered only in a Claude Code or ChatGPT chat that has started.
An OpenRouter turn stops with “… cannot read images”. The chat’s model can’t take pictures. Pick a model that can, or remove the image.
An attachment disappeared. Attachments and code references belong to the message you’re writing in that chat, and switching chats clears them. Add them again.