Most of the friction in agent-assisted work isn’t the model. It’s the shuttling: copying a file path into the prompt, pasting a diff into a chat, switching to an editor to see what a function does, writing the commit message afterwards.
A Warpforge task is built so none of that leaves the window.
Getting context into the chat
You rarely want to describe what you mean. Point at it instead.
| To send… | Do this |
|---|---|
| A file | Type @ and search by name — or drag a row from the file tree straight into the composer |
| A changed file’s diff | Send to chat on the file’s header in the diff view |
| A specific piece of code | Select the lines in the editor and press ⌘L (Ctrl L) — the highlighted range goes over with its file and line numbers |
| Service or port-forward output | Select lines in the Runtime log and press ⌘L (Ctrl L) or Add to chat — they go over as a chip with the line range and times, so the agent can read the lines around them. A failed service offers Send last failure to attach its latest output in one click |
| A screenshot or image | Paste or drop it into the composer, on agents whose harness accepts images |
| Something on a running page | Open it in the Browser tab and point at the element — it goes over as a picture with its text and selector |
The composer also takes @ mentions ranked by relevance as you type, and slash commands where the harness provides them.
If the agent is still working when you send, your message waits its turn above the composer — and you can still change your mind: hover a waiting message to edit its text or remove it before it is sent. A removal can be undone, and both actions fall back with an Already sent notice if the agent got the message first.
Reading code, not just diffs
The editor inside a task is a real editor, not a diff viewer bolted to a file list. With a language server running it does what your IDE does:
| Go to definition | ⌘B or ⌘-click — jumps across files, not just within the one you’re in |
| Find references | Everywhere a symbol is used |
| Rename symbol | Across the project, not a find-and-replace |
| Hover docs | Signatures and documentation without leaving the line |
| Completions | As you type, from the language server |
| Diagnostics | Errors and warnings inline, live |
| Format | On demand |
Missing a language server is one click, not a research project. Open a .ts, .py, or .rs file without its server installed and the editor shows an Install banner rather than silently degrading to plain highlighting. Warpforge ships install support for TypeScript/JavaScript, Rust, Go, Python, JSON, CSS, HTML, and YAML — each with its status in Settings → Language servers.
Alongside that:
- Several files open at once on a tab strip, with syntax highlighting across the usual languages.
- Find in Files (⌘⇧F) — every match grouped by file with a live peek at the surrounding code; Enter opens it at that line, cursor already placed.
- Quick open (⌘P, or double-tap ⇧) — files by name, with matching source lines underneath them.
- A real file tree with native right-click: New File, New Folder, Rename, Delete. Deletes ask first.
Searches stay inside the project — build output and dependencies don’t bury what you’re looking for — and everything resolves against the task’s own worktree, so what you edit is what the diff shows.
Previewing what you’re looking at
Not every file is best read as text, so the editor renders it instead. A preview toggle appears in the file’s header wherever there’s something to render:
| File | What you get |
|---|---|
Markdown — .md, .markdown, .mdx |
Rendered document, or the source. Toggle between them. |
HTML — .html, .htm |
The page, rendered and running — handy when an agent is building a prototype and you want to click it rather than read it. |
| SVG | The image, or its markup. Read-only either way. |
Images — .png, .jpg, .jpeg, .gif, .webp, .ico, .bmp |
Shown directly, no toggle needed. |
Reviewing the change
The diff view gives you the whole spectrum between “accept everything” and “do it yourself”:
- Read it unified or split.
- Revert individual hunks in split view — the ↩ next to a changed hunk discards just that change, not the whole file.
- Edit inline where it’s faster to fix than to explain. ⌘S saves.
- Or send the file back to chat with Send to chat and let the agent fix it, now that it can see exactly what you’re looking at.
- Or leave review notes on the exact lines you have something to say about, and send them all at once — see below.
Review notes
Review the agent’s work the way you’d review a colleague’s: note by note, then hand it all back in one go.
- Hover a line in the diff, unified or split, and click the + that appears beside its line number. Press and drag along the + column to cover a range of lines.
- Write the note and press ⌘⏎ (Ctrl Enter) to save it, or Esc to drop it. The note sits under the lines it’s about. Add as many as you like, across as many files as you like.
- Press Send N notes in the strip above the diff. Every note goes to the agent as one message, each with its file and line numbers, the lines it quotes, and what you wrote. If the agent is still working, the message waits its turn and goes out when the current reply finishes.
Notes stay on the diff after you send them, marked Sent, so you can check each fix against what you asked for. Resolve the ones that are done. When some still aren’t right, Resend puts a note back in the next batch — or, once everything has been sent, the strip’s button becomes Resend N notes and sends back whatever you haven’t resolved.
When the agent rewrites the code around a note, the note follows its lines. If the lines it quoted are gone entirely, the note is marked Outdated and shows what they used to say — usually a sign the agent changed that code, so check it and resolve the note.
The strip’s note count opens a list of every note, with a link to its file — handy when a note’s file has left the diff or its lines are folded away.
On a finished workflow pipeline, the notes go to the last stage that changed the code, as they would for pull request feedback.
Text you don’t have to write
Four kinds of prose Warpforge drafts for you. In every case you’re the editor, not the author — nothing is submitted on your behalf.
| What | Written from |
|---|---|
| Task title | The task’s first prompt — a short imperative line, so tasks are legible on the board without you naming them |
| Commit message | The actual diff, in Conventional Commits form — not from the prompt, so it describes what changed rather than what was asked for |
| PR title and body | The branch’s outgoing commits and their combined diff |
| Enhanced task prompt | A rough note you wrote — Enhance rewrites it into a structured, well-specified task |
Enhance is the one worth calling out: a backlog item you typed in five seconds (“fix the flaky login test, probably the timeout”) becomes a properly scoped prompt before an agent ever sees it. Bad prompts are the most common cause of bad agent output, and this is the cheapest place to fix them.
Small things that add up
None of these is a headline feature. Together they’re most of what makes a task pleasant to sit in.
The chat stays where you put it. It follows the newest message while an agent replies, and stops following only when you actually scroll up — clicking a file link or expanding a work update doesn’t count. Scroll back to the bottom and it starts following again on its own.
Notifications you can answer without switching apps. When an agent needs approval while Warpforge is in the background, the macOS notification carries Approve, Reject, and Review buttons that do exactly that — and says what it is asking for in plain language, so you can decide from the notification. They stay quiet while Warpforge is the window you’re looking at.
Steps never spin forever. A step an agent left open when its turn ended — including the Compact conversation step after /compact — shows as finished once the turn completes, and as failed if you stopped the turn. Conversations you already have are corrected when you open them.
Fork a conversation into another harness. Take a conversation up to any point and continue it with a different agent — it carries the context, the files touched, the worktree, and your uncommitted work. Useful when one model is stuck and you want another to pick up mid-thread rather than start over.
Model picking that survives long lists. The composer’s model picker has a pinned search box — type to narrow hundreds of models, Esc to close. Short lists stay simple lists. Add a provider or model in the agent itself and Warpforge picks it up on restart, or immediately via the refresh button next to that agent in Settings, which also shows how many models it currently knows about.
Claude starts in Auto mode. A new Claude task runs in Claude’s Auto permission mode instead of Manual, so routine steps go ahead without an approval each time. Want every step approved? Pick Manual under More → Mode in New Task or in the composer.
Archive or delete a task without opening it, from the overflow menu on its sidebar row.
Git, in the task
Warpforge’s git surface is closer to an IDE’s than to a commit box: an IDE-style branch tree with local and remote branches, native right-click menus, rebase-onto without checking out first, and amend that prefills the message you’re rewriting. It’s covered on its own page — see Git in Warpforge.
The shortcuts:
| Action | Shortcut |
|---|---|
| Commit… | ⌘K |
| Push… | ⇧⌘K |
| Sync with remote | ⌘T |
| New branch… | ⌥⌘N |
Keyboard shortcuts
| Shortcut | Action |
|---|---|
| ⌘N | New task |
| ⌘P / ⇧⇧ | Quick open (files and text) |
| ⌘⇧F | Find in Files |
| ⌘B / ⌘-click | Go to definition |
| ⌘L | Send selection to chat |
| ⌘S | Save edits |
| ⌘K | Commit… |
| ⇧⌘K | Push… |
| ⌘T | Sync with remote |
| ⌥⌘N | New branch… |
| ⌘+ / ⌘- / ⌘0 | Text size up / down / reset |
| Esc | Close the palette or panel you’re in |
Replace ⌘ with Ctrl throughout — for example Ctrl ⇧ F for Find in Files and Ctrl L to send a selection to chat.
See also
- The browser — open what you’re building and hand the agent what you’re looking at
- Git in Warpforge — the branch tree, context menus, and commit surface
- Tasks and backlog — where a task comes from and how it ends
- Choosing your mode — single agent, orchestrator, or Factory
- Agent tools (MCP) — what the agent can reach for on its own side