Open Files to browse the project, edit source, and review changes beside the conversation. Citations open at the referenced line; Mod+K finds a file by name; F12 or Mod-click goes to a definition.
Files and tabs
A single click opens a preview tab that the next browsed file can reuse. Editing, saving, or pinning turns it into a regular tab.
The Files tree can create, rename, duplicate, drag, and trash files or folders. Deletion confirms first and uses the operating-system Trash. Files an agent deletes skip the Trash, as they would from a terminal, but Undo in Files brings them back. Hidden and ignored folders, including .git and .paintedwolf/, remain browsable.
Use Expand all or Collapse all from the tree menu or Crossbar. Large expansions prepare in the background while you continue using the editor.
Right-click a path to reveal it in your file manager, copy its path, or add it to chat. To use another editor for citations, set Settings → General → Editor → Open citations in.
Unsaved work is recovered after a restart. Changes from another editor merge into the shared draft; if reconciliation fails, the draft stays available for reload or merge.
Open files follow .editorconfig; saving or externally changing one updates every open file under that project folder.
When you open a file in several windows, edits stay shared while each window keeps its own cursor, selection, scroll position, and undo history. The active file tab has a subtle window color; the same color marks that window’s cursor and selection elsewhere. Brief labels identify moving cursors, and hovering a selection reveals its window label.
Use Open in N windows in the editor footer to see which windows have the file open. The list marks This window and lets you focus another desktop window. Numbers stay fixed while windows remain open. Your theme supplies the colors, including a dedicated main-window color; labels keep windows identifiable when colors are similar.
Keyboard editing
Under Settings → General → Editor → Keyboard, Editing style offers Default and Vim. Default supports familiar Emacs movement, selection, and cut-and-yank commands. Vim adds modal editing, with the current mode and command entry in the editor footer. Both use the same save and undo history.
F6 and Shift+F6 move between app regions. Type a filename prefix while the file tree has focus to find an entry. Tab indents in the editor; enable Tab moves focus to use it for navigation instead. Settings → Keyboard shortcuts lists the current commands and lets you change their bindings.
Use Wrap in the footer to toggle word wrapping. Line numbers are available in View and Editor settings.
Ask from the editor
Select code and press Mod+I to request a focused edit. With no selection, the app uses the enclosing symbol or nearby lines. Unsaved work must be saved or discarded first.
An edit opens a hunk review after it is applied. Accept keeps a hunk; Reject restores it.
Right-click a selection for Explain in context, Give me the gist, Document this, Add test, Rewrite structurally, Rename symbol, or Fix this finding. These focused turns cannot use the shell, network, or MCP. Press Mod+L to attach the selection to a chat without sending it.
Secrets in your source
When a credential has to live in your source, the editor marks it and keeps the model from reading it.
Values the app recognizes are underlined where they sit: a solid underline for one already managed, a dashed underline for one it recognizes but nothing is tracking yet, and a struck wavy line for a capability that no longer works while its value is still screened. The marks are drawn over the code and repeated in the overview strip beside the scrollbar. Nothing is added to the gutter or the status bar.
No pattern list recognizes every credential, which is why you can point at one yourself. Select the value, right-click, and choose Mark as secret. Name it, and the model receives a reference instead of those bytes; the host can resolve that reference inside commands, terminal input, HTTP requests, MCP calls, and configuration file writes (such as .env). If the screen could not cover the whole file, the status bar says so, because that changes what the absence of marks means.
Marking never changes the file. Nothing is rewritten, nothing is saved, and there is no undo to press — the file keeps the value exactly as it was, and you undo the mark by revoking its reference under Project configuration → Secrets. What changes is everywhere else: those exact bytes are now screened on the way out and redacted before anything is written to a transcript, an index, or a log.
Right-click a marked value for Copy reference, Find other uses in this file, or Open in Secrets. On an untracked value the app flagged, Ignore this value in this project… reviews the exact public value, reason, folder and optional expiry before saving plaintext to .paintedwolf/ignores.yaml. Only declare values safe to commit and share. Project settings → Secrets → Ignored values shows the declarations and opens the file for editing or removal. Protected credentials remain protected.
This is not a secrets manager. The app can generate random material and rotate a stored value, but it does not provision credentials in an external system, distribute them to workloads, or replace your key service. For credentials already needed by local work, it keeps the bytes out of the model while the agent uses a bounded reference.
Search and replace
Press Mod+K to open Crossbar. Type to match app actions, recent chats, file names, code, messages, and evidence. Tab moves between result types. Choose Show all results for the full Search stage.
Installed packs can add actions to the same list. Provider-backed sources appear under Sources or behind their shown prefix, and contact their provider only after you enter that source.
Mod+F finds text only in the active view. Find everywhere or Mod+Shift+F carries that query into Search.
The Search stage adds facets, a result timeline, and filters such as kind:code, project:, path:, agent:, before:, and after:. Match case, Whole word, and Regular expression use the same matching rules for code, messages, and evidence. Select a result to open its source.
Results continue loading as you scroll. The count and status show whether the result set is complete or limited. Export broad searches as JSONL or CSV; scan-scoped searches also support SARIF, and incomplete exports are labeled.
Press Mod+Shift+H or choose Replace in project and review the preview before applying. While the selected folders are still being indexed, preparation can be canceled. A limited preview disables Apply all; review and replace individual files, narrow the scope, or refresh the preview. Each file applies only if it still matches the preview revision; a completed batch can be reverted from its receipt. Project-wide rename from F2 uses the same path.
When the agent edits
The Files tree follows files and folders as the agent or another editor creates, moves, or removes them. Worker changes stay in their private workspace until the coordinator lands them in the project.
While a chat works, the editor shows what it read in a muted agent color and outlines changes that have not landed, with a label saying why — about to edit, waiting for your approval, or a worker draft ready to land. The marks clear when the turn ends. Choose what they show under Settings → General → Editor → Agent activity.
The agent reads the shared editor draft, including unsaved changes. Its edits merge into that document and save it, preserving compatible changes from you and other windows. If the lines it read have changed, the agent must read them again before editing. Commands and tests use files saved on disk. Agents can also inspect retained ledger versions, diff across revisions, or restore earlier file states directly.
The gutter marks scanner findings and the turn that produced changed lines. F8 and Shift+F8 walk the findings in the file.
Review and verify
Switch from Files to Review for changed files and diffs. Choose Working changes, This turn, Everything in this chat, a saved pin, or Since last commit when Git is available.
Review keeps your changes, AI changes, and changes from outside the app in one list, and each row names who contributed it — You, the chat that made the change, Command, or Outside app. Choose Pin current state to record a comparison point you can return to later; the picker keeps your pins alongside the other scopes, and Review pins work even where Git does not.
Choose Walk to step through the chat’s timeline, grouped by turn. Each step opens the recorded before-and-after change in the ordinary file tab and, for agent work, highlights the matching step in chat. Review remains a current changed-file list while Walk moves through history.
The version menu in the editor lets you browse a file’s retained versions, including versions from worker workspaces. History follows the logical file when it is moved or renamed. Historical versions are read-only; choose Current to return to the editable file without replacing an unsaved draft. Restore applies a selected file version while keeping the chat. To undo a prompt and the work after it, use rewind.
While Review is open, the file briefing follows the active text or diff tab. It shows a structural overview immediately, then adds Purpose, Structure, and Key behavior. Select its file name, declarations, or source references to open the file or exact line. The briefing stays pinned to the revision it describes and is marked stale when the file changes.
Painted Wolf Code has two other review moments besides the finished diff:
Project test command. Open Project configuration → Tests. The app may detect a likely command from the repository, but it never applies that suggestion silently. The command is normally stored in .paintedwolf/verify.yaml — commit it when the team should share the same gate. After an agent edits your files, this command has to pass before the work is treated as finished. Until a command is saved, a successful check the assistant ran on the current files can satisfy the same gate.
A check that never reached a verdict is unverifiable, not a failure — usually the sandbox stopped the command. Approve the access it needs, or run the check yourself.
Edit review. Open Project configuration → Edit review and add a path glob such as infra/** — a folder name on its own covers everything under it. Matching edits pause before disk; everything else continues. Edit review does not make the matched area writable. Containment and approvals still apply underneath it.