Skip to content

Workspace

Terminal

Real shells in the rail and in a drawer under the chat, started in the chat’s folder with your own shell and settings.

Codz has two places to run a shell next to a chat: the Terminal panel in the rail and the terminal drawer across the foot of the window. Both are real terminals. Your login shell runs on a pseudo-terminal, so full-screen programs such as vim, htop and less, colours, hidden password prompts and ⌃C work as they do in Terminal.

Every shell starts in the folder the chat works in: the project folder, or the chat’s own worktree when it runs isolated.

The Terminal panel

Open it with ⌘⇧3, from the rail’s Open a panel list, or by typing /terminal in the composer. The shell starts the first time the panel appears, not when Codz launches.

The first Terminal tab runs one shell per folder. Every chat in that folder shows the same shell, and switching to a chat in another folder leaves it running, so a dev server started here keeps serving.

  • More shells. Choose New terminal from the rail’s + menu. Each one is a tab with its own shell.
  • Tab names. A tab is named after the shell’s current folder and follows cd in zsh. While a program sets its own title and runs, the tab shows that title instead.
  • Running dot. A dot on the tab means a command is running.
  • Closing. Closing the first Terminal tab keeps its shell running; ⌘⇧3 brings it back. Closing a New terminal tab ends its shell straight away, without asking, even if a command is still running.

Shells do not survive quitting Codz. The folder’s tabs come back after a relaunch, and each starts a fresh shell when you show it.

The terminal drawer

The drawer is a row of shells across the foot of the window, under both the conversation and the rail. Open or close it with ⌃`, the Terminal drawer button in the chat header (or at the right end of the rail’s tab row), or Workspace ▸ Terminal Drawer.

  • Opening an empty drawer starts a shell in the chat’s folder. New terminal (+) adds another.
  • Each chat has its own drawer and its own shells. They keep running when you switch to another chat.
  • Close terminal drawer (✕) hides the drawer and keeps its shells. Closing a shell’s tab ends it, and closing the last tab closes the drawer.
  • Drag the drawer’s top edge to change its height. Codz remembers the height.

Deleting a chat ends its drawer’s shells. Nothing in the drawer survives quitting Codz.

Your shell

Codz starts your account’s login shell, the same one Terminal uses, as a login shell. It inherits Codz’s environment and sets TERM=xterm-256color, COLORTERM=truecolor and TERM_PROGRAM=Codz.

With zsh, Codz adds a small integration: your .zshenv, .zprofile and .zshrc load as usual, and Codz adds prompt hooks so it knows where each command starts and ends, how it exited and which folder you are in. That is what renames the tab when you cd and what lets Send Output to Chat send just the last command’s output.

Other shells, such as bash and fish, run without the integration. The running dot still works, but the tab keeps the starting folder’s name and Send Output to Chat sends the most recent lines on screen.

The terminal uses the Code font from Settings ▸ Appearance, or the system’s monospaced font when that is blank.

What works

  • Full-screen programs, 256-colour and true colour, bold, italic and underline.
  • Mouse support in programs that ask for it. Hold ⌥ to select text instead.
  • ⌃C, ⌃Z and ⌃D, hidden password input, and bracketed paste.
  • ⌥← and ⌥→ move by word, ⌥⌫ deletes a word.
  • Selecting text: drag, double-click for a word, triple-click for a line, ⇧-click to extend. ⌘C copies, ⌘V pastes, ⌘A selects everything, and a middle click pastes the selection.
  • 10,000 lines of scrollback. ⇧PageUp and ⇧PageDown scroll through it. Output keeps coming while you are scrolled up, and following resumes when you scroll back to the bottom.
  • Resizing. Programs are told the new size; lines already on screen are not re-wrapped.

Not supported: finding text in the terminal, clickable links, split panes, an audible bell (the bell flashes), zooming the font, and choosing a different shell.

Send output to the chat

Select text in a terminal and click Add to chat, or choose it from the right-click menu. The selection goes into the composer as a text block; nothing is sent until you send it.

The right-click menu also has:

  • Send Output to Chat puts Terminal output: and a block of output in the composer: the last command’s output with zsh, otherwise the most recent lines.
  • Save Output as Turn Evidence (Terminal panel only) attaches the output to the chat’s last finished turn. See Reviewing changes.
  • Clear empties the scrollback and clears the screen.
  • Restart Shell starts a new shell in the same tab.

Agents and the terminal

Agents run their own commands through their command-line tools. Those commands appear in the transcript and in the Activity panel, not in these shells, and an agent cannot read or type into your shells.

To rerun an agent’s command yourself, click its row in Activity. Codz opens the Terminal panel and types the command at the prompt without running it, so you can check or edit it and press ↩.

Open a chat in Terminal

Chat options ▸ Open in Terminal copies the command that resumes the chat in its provider’s own tool, such as claude --resume or codex resume followed by the session id, and asks macOS Terminal to run it in the chat’s folder. If Terminal cannot be opened, Codz says so; the command is still on your clipboard to paste into any terminal.

It is available for Claude Code, Codex, Cursor and OpenCode chats once the provider has started a session.

Keyboard shortcuts

ActionShortcut
Open the Terminal panel⌘⇧3
Open or close the terminal drawer⌃`
Copy / paste⌘C / ⌘V
Select all⌘A
Scroll back / forward⇧PageUp / ⇧PageDown

Troubleshooting

The tab name does not change when I cd. Only zsh reports its folder to Codz. Other shells keep the name of the folder they started in.

A shell has ended. Choose Restart Shell from the right-click menu. In the Terminal panel, a shell that ended is also replaced the next time the panel appears.

Terminal could not be opened. Open in Terminal copied the command before trying. Paste it into a terminal of your own, in the chat’s folder.

A setting from my shell profile is missing. Codz starts a login shell and, for zsh, loads your usual startup files. Anything set only in a terminal app’s own profile, rather than in your shell’s files, is not applied.