Working in a workspace
Files, changes and search
The Files, Changes and Context library surfaces — browsing and editing the workspace's files, reading its diff, and finding text across a checkout.
Three of the right panel’s surfaces are how you check the agent’s work without leaving the conversation. Each is scoped to the workspace’s checkout — so what you see is the branch you’re on, not the project root.
Files
⌘E shows it. Two columns: the checkout’s tree on the right, and on the left either search (when nothing is open) or the file you picked. Fold the tree in the toolbar gives the reader the whole width; the toolbar shows the file’s path and a × to go back to search.
The reader is an editor. Type and it saves a second later (⌘S saves now), Markdown has a Raw / Preview toggle, and the file follows the disk — when the agent rewrites something you have open, it refreshes in place without losing your cursor or unsaved typing. Images render; SVG opens as source.
When the agent mentions a file, clicking through opens it here with its parent folders expanded. An ambiguous name opens the file search seeded with the candidates, and a folder link reveals the folder in the tree.
Search
With no file open, the Files surface has two search tabs:
- Files — fuzzy file names. ⌘P opens the same search as a modal from anywhere, which is usually faster than the tree.
- Text — literal, case-insensitive text across the checkout’s tracked and untracked files (gitignored ones are skipped, and results stop at 2,000 matches). ⌘⇧F jumps here. Hits are grouped by file, each opening the file on that line, and the results re-run as the agent changes things.
Both skip a list of directory names you control in Settings › General › File search › Ignored directories — node_modules, dist, .git, and the usual suspects by default. The list also applies to @-mentions in the composer. The file tree still shows everything.
Changes
⌘D shows it: every changed file in the scope, stacked as one diff with syntax highlighting, and a column of files beside it that tracks where you’ve scrolled. Click a file in the column to jump to it, or the file name in a diff header to open it in Files at its first change. Long files show fifty lines and a Show N more lines; click a file’s header to fold it down to the header and back. A file over 2 MB isn’t diffed — open it to read it — and a changeset too large to show in full says what it left out.
The scope menu switches between Uncommitted — what’s pending in the working copy — and This branch — everything since the branch diverged from the project’s home branch, uncommitted work included, so the branch view is always a superset. Each row in the menu carries its scope’s +N −M, so you know which holds something before switching, and the same count sits on the Changes button and in the rail while the panel is closed, live while the agent works.
The sidebar keeps a running count of commits ahead of and behind your home branch on each worktree workspace (Settings › Appearance › Left sidebar › Ahead / behind counts, on by default), so you can see a workspace’s shape without opening it.
Context library
⌘⇧E shows the project’s context library — background docs the agent reads. It has the same two-column shape as Files with its own reader, so opening a context doc doesn’t lose your place in the tree. Folders open collapsed, with Expand all on the root row. Docs the current chat has loaded are tagged Active, and a doc or folder set to load in every conversation is tagged Always.
Reading a diff before merging
The habit that makes parallel agents work is a short one: when a workspace lands in your inbox, open Changes, read the diff, and either send it back with a note or ship it. The pull request control is the other half of that — it’s the same review, just with checks attached.