Chapter 3 of 15

Talking to an Agent

Freddy's first question went well. Now he wants the agent to fix the export bug, and he realises he is about to make four decisions without noticing: which agent, which model, how hard it thinks, and whether it may touch a file without asking.

The problem

Starting a task with an agent is mostly typing, and a little bit of deciding. The deciding is the part people skip. They use whatever the agent defaulted to, and find out what that meant when it has already edited eleven files. The typing has its own friction: you think of something while the agent is working, you have a screenshot of the bug, you want to point at src/export/csv.ts without spelling the path.

The hard way

In a terminal, a new thought while the agent works means interrupting it, and an interrupted agent often loses the thread of what it was doing. A screenshot means saving a file, finding its path and describing it. A path means typing it, or letting the agent search for it. None of that is hard, and all of it is friction at exactly the moment you are trying to explain something.

Sending, queueing and stopping

Type in the message box at the bottom of a thread and press Enter to send. Shift+Enter starts a new line. ⌘L puts the cursor in the message box from anywhere.

  • ↑ in an empty message box brings back the messages you sent earlier, newest first; ↓ goes forward again.
  • What you type is kept per thread. Switching threads does not lose a draft.
  • While the agent is working, the send button turns into Queue. Your message waits and is sent when the turn ends. Queued messages are shown above the message box. You can remove them, or press Send now to deliver one into the running turn (Claude Code, Codex, Elyra and Pi).
  • Stop (or ⌃C in the message box) interrupts the agent.

Queue is the answer to the problem above. Freddy thinks of a second thing while the agent works on the first. He types it, presses Enter, and it waits above the box. Nothing is interrupted, and nothing is forgotten.

Attachments

  • Images: paste them (⌘V), drop them on the window, or use the paperclip button. They are sent to the agent with your message. Supported: PNG, JPEG, GIF and WebP.
  • Other files dropped or picked are added as @path mentions, so the agent reads them itself.
  • Long pasted text (over 4,000 characters or 60 lines) becomes a Pasted text chip instead of filling the message box. It is sent with the message.

Remove an attachment with the × on its chip. A pasted stack trace is the classic use of the third one: it stays out of your way, and the agent gets all of it.

@ and /

Type @ to get a list of the files and folders in the project. Choose one with ↑/↓ and Enter or Tab, and the path is inserted. The list respects .gitignore and matches loosely: @thrview finds src/thread_view.rs. With Claude Code, the list also shows its subagents as @agent-<name>, for example @agent-Explore, to ask for a specific subagent.

Type / at the start of the message to see the commands:

CommandWhat it does
/clearStart a fresh conversation in this thread (the agent forgets the earlier messages)
/compactAsk the agent to summarize the conversation to free up context
/rename <title>Rename the thread
/planSwitch to Plan only
/defaultSwitch back to Ask for approval
/statusShow the model, context use and cost

The agent's own commands are listed after these. For Claude Code that includes your custom commands and skills. Choosing one inserts it, and you can add arguments before sending.

The row under the box

This row controls the thread, and it is where the four decisions from the start of the chapter live.

  • Agent: Claude Code, Codex, Elyra, Pi, Gemini CLI, Cursor Agent, OpenCode or your custom agent. You can change it only before the first message. To switch later, use Continue with (chapter 6). Agents you switched off in Settings are not listed.
  • Model: the models the agent offers. Workspace learns the list from the agent after its first start and remembers it. At the bottom of the menu, Star this model saves the agent and model as a preset. Starred presets are listed at the top of the menu for every thread. Before the first message, picking one also switches the agent.
  • Account: only shown when you set up accounts for the agent in Settings. Like the agent, it can be chosen only before the first message.
  • Effort: how hard the model thinks (Claude Code: low to max; Codex: minimal to extra high; Elyra and Pi: off to extra high). Not every agent supports it.
  • Permission mode, below.
  • Local / New worktree: where the thread works. Chapter 7 is about this.

New threads start with the agent, model, effort and permission mode you used last.

Permission modes: the decision that matters

ModeThe agent…
Ask for approvalasks before editing files or running commands
Accept editsedits files freely, asks before anything else
Plan onlyreads and plans, but changes nothing
Full accessdoes everything without asking

Choose by what the task can break, not by how much you trust the agent. A question about the code is a Plan only task. A change you will review in the diff anyway can be Accept edits. Full access is for a folder you can throw away, which chapter 7 makes cheap.

Know this before you pick an agent for a task you want to supervise. Elyra and Pi do not ask for approvals; they run tools directly. That is how those two agents work, not a setting you forgot. If you want an approval card for every edit, use an agent that asks.

Debug mode, and the context meter

The Debug button (the bug icon) turns on reproduce-first mode. The agent is told to write a failing test or a minimal reproduction first, explain the root cause, make the smallest fix and show the reproduction passing. The button turns yellow while it is on, and the change applies from the next message. For Freddy's export bug it is the right default: “the export drops the last note” is a failing test waiting to be written.

The context meter shows how full the model's context window is, with the cost so far when the agent reports it. When it is nearly full, use /compact, which asks the agent to summarize the conversation and free up room.

Try it: start a thread in Plan only and ask the agent how it would fix a small bug. Then press Enter on a second message while it is still answering, and watch it appear above the box as a queued message.

What you learned

  • How to queue a message while the agent works, and when Send now is the better choice
  • How to attach images, files and long pasted text, and what @ and / do
  • What the row under the message box controls, and that the agent is fixed after the first message
  • The four permission modes, and how to choose one by what the task can break
  • That Elyra and Pi run tools without asking, so approvals are not how you supervise them
  • What Debug mode and the context meter are for
Next: in Chapter 4 you read what the agent did: tool cards, approvals, plans, and how to put the files back to before a message.