Raven
All docs

Working in a workspace

Chatting with an agent

The composer — mentioning files and designs with @, running slash commands, queueing work, and rewinding a conversation that went wrong.

The composer is where most of the work happens. Type, send, watch. What follows is the parts that aren’t obvious.

Mentioning things with @

Type @ to pull something into the conversation explicitly. The menu has two sections:

  • Designs — a board, section, or frame from the design boards, so the agent knows which mockup you mean.
  • Files — anything in the workspace’s checkout, by fuzzy name, including the project’s context docs.

Mentioning is a way to be precise. The agent can find files on its own, but saying which one saves it a search and saves you a wrong guess. Directories on the file-search ignore list stay out of the menu.

The + button attaches a file, and you can paste or drop images straight into the composer — screenshots of a bug, a design, a stack trace.

Slash commands

Type / at the start of the message, or after a space, for the command menu. Tab or Enter fills the highlighted command in without sending, so you can add arguments.

Commands come from several places:

  • Your own, as Markdown files. Raven scans ~/.claude/commands and ~/.codex/prompts for personal commands, .claude/commands inside the project for ones committed alongside the code, and your installed Claude plugins and skills. Project commands win over personal ones with the same name.
  • The agent’s own built-ins — /compact, /context, /usage, /init, /review, and others. Claude’s list, and your plugin and skill commands, are read from the last Claude session in the project, so a project where Claude hasn’t run yet offers /compact alone; Codex chats get /compact, which Raven handles itself. A few commands the CLI would offer are refused because Raven owns them — /model, /effort, /config, /mcp, and a handful more — and sending one says so; the composer’s controls are the way to do it.
  • Raven’s, available with either agent:
Command What it does
/clear Resets this conversation in place.
/sketch <request> Shows visual options as an inline card in the chat, without creating files.
/design <request> Builds a saved board of frames on the Design surface.
/linear <request> Looks up, creates, or updates work in the project’s connected Linear team.
/set-up-simulator Gets the workspace’s iOS simulator running, fixing whatever setup found.

Raven’s commands and your own files also work mid-message — “tidy the header, then /sketch two spacings for it”. /clear and the agent’s built-ins only run at the start. A command name is colored wherever it will actually run.

Because project commands live in the repo, a team’s shared prompts travel with the code.

Modes and models, per tab

The controls under the composer set the mode and model for this tab. ⇧Tab cycles the mode. Change them mid-conversation as the work changes shape — explore in Ask, agree on an approach in Plan, then switch to Build.

A quiet row under the composer also shows the branch the checkout is on; click it to switch branches (see Projects and workspaces).

The agent shows its work

When the agent checks something in the browser or simulator, it can put the picture in its reply: a screenshot or a short clip sits in the conversation at that point, with its sentence as the caption, and a simulator capture is drawn inside an iPhone frame. Click one to see it full size. Like sketches and cards, this works in every mode.

Queueing a follow-up

While a turn runs, the composer says Queue a follow-up…. Send one and it waits in a row above the field — with Edit, Send now, and Delete — and goes out the moment the turn ends. One at a time. If you stop the turn instead, the queued text comes back into the composer rather than being lost.

The same holds for a worktree workspace that’s still provisioning: a message sent early is held, shown as Queued message — sends when setup completes, and survives a restart. The ✕ discards it.

Drafts, stopping, and clearing

Unsent text is saved per tab and survives a restart, so switching away doesn’t lose it (attachments don’t persist). Stop a running turn with the button or by pressing Esc twice in the composer — the conversation keeps everything up to that moment. ⌘F finds text in the conversation. /clear wipes a conversation’s history while keeping the tab, which is the right move when a chat has drifted or the context ring is full.

Rewinding and forking

When a turn goes wrong, you don’t have to argue with it. Click one of your own sent messages to edit it in place and resend: the conversation continues from there and everything after it is dropped.

To keep both attempts, fork instead. The ⋯ on any reply offers Fork in new tab (same checkout, side by side), Fork in new workspace (a new row, still in your project folder — local workspaces only), and Fork in new worktree workspace (a separate copy on its own branch). See Running agents in parallel.

Naming

Raven names workspaces and tabs from the first message, with a fast model, and writes a one-line summary to go with it — that’s the title and hover text in the sidebar. Right-click a workspace to Rename it by hand or Regenerate title from what the conversation actually covered, and turn auto-naming off in Settings › Chats › New chat defaults.

Bringing in CLI chats

Settings › Chats › Import chats brings Claude Code and Codex sessions from the last 30 days in as chats, one workspace each, filtered by agent and grouped by repo. A session from the repo root becomes a local workspace; one from a linked worktree becomes a worktree workspace, or a new tab in the workspace that already owns that worktree. Repos Raven doesn’t know yet are added as projects. Once imported, a session isn’t offered again.