New
- Undo closed panes and tabs with ⌘Z or ⌘⇧T within five seconds by default, restoring running programs, scrollback, and split positions—even after closing a worktree’s last tab. Press ⌘⇧Z to close them again; the restore window follows Ghostty’s
undo-timeout setting.
- Start the built-in Review Loop workflow to open a selectable reviewer beside your current session. It defaults to 2–4 rounds, checks previous findings and searches for new issues each round, and saves results in workflow history with unresolved work clearly marked.
Fixed
- Claude’s status no longer incorrectly switches from Working to Idle when you browse transcript history. Activity detection also better accounts for ongoing child tasks and background shell jobs.
- On macOS 27, clicking inside an active Canvas terminal or Command-clicking a link no longer unexpectedly changes card selection.
Agent Workflows are here: turn repeatable tasks into reusable flows that coordinate your agents, run scripts, and keep every step and result in one place.
New
- Build your own agent workflows. Combine prompts, agent launches, script actions, conditions, and loops in a reusable workflow. Assign Agent Profiles to roles so different agents can take care of different steps. Open Manage Workflows from the Agents menu, start with a single-agent or multi-agent template, or use Create with Agent to help write one for your task.
- Start and follow a run from Prowl. Launch workflows from the Agents menu, Command Palette, or Settings. The start sheet shows the participating agents, options, and steps before you run; toolbar controls let you follow progress and resolve steps that need attention. Local script actions require review and approval before execution.
- Hand off a task without losing context. The built-in Handoff workflow asks the current agent to write a briefing, saves it with repository and session context, and can launch a receiving agent in a new tab to continue. Choose save-only to keep the packet for later. Handoff now uses the workflow interface; existing
prowl handoff commands show migration instructions.
- Inspect every step in Workflow History. Open the history button beside the toolbar bell to revisit prompts, agent deliveries, script outputs, errors, and repeated steps. Filter by pane or worktree, open result files, and export a finished run as a ZIP. Local history is kept for three days; export runs you want to retain.
Improved
- Codex status tracking now uses available session lifecycle evidence to keep panes Working through quiet periods while turns or child tasks remain active. Approval and question prompts still take precedence as Blocked.
- Smaller release downloads, with the same signed and notarized app.
Fixed
- Completion reminders remain unread until you view the pane in the active, visible window, including Canvas panes that have been panned offscreen.
- Fixed active Claude Code sessions appearing Idle when the composer has a session title, and active Codex sessions appearing Idle with animated backgrounds.
Meet Agent Island: all your agents' status at your Mac's notch, with a new way to navigate built for speed and muscle memory. See who is working, waiting for you, finished, or idle at a glance, then jump straight to any agent—even from another app.
New
- All-agent status at the notch. Agent Island brings together status counts for every agent, with visible reminders for agents waiting for input or with unread results. It fits around the notch on your chosen display, or appears as a draggable floating bar on displays without one.
- Agent navigation that becomes muscle memory. Assign Toggle Agent Island in Display or Shortcuts settings, then use the same quick sequence from any app: open the roster, select with arrow keys, and press Return to jump to the pane. Number keys 1–9 jump directly to an agent on the current page; agents waiting for input and unread completions get priority when the roster opens. You can also expand the island and click any agent.
- Off by default, easy to enable. Turn on Show Agent Island in Settings → Agents → Display, or use the island toggle in the Active Agents panel.
- Active Agents and Agent Island preferences now live together in Settings → Agents → Display, including placement, opacity, and whether to hide the island when empty.
- Settings → Agents → CLI & Skills now shows whether the CLI connection is listening, with a reason when it is unavailable.
Fixed
- Closing a pane or tab now asks for confirmation if an affected terminal received editing input within the last 10 seconds or still has active input-method composition.
- Agent status now follows explicit runtime indicators more reliably, including Pi and OMP working indicators, Codex background-terminal waits, and Copilot streaming output. Claude Code and Copilot workspace-trust prompts correctly appear as Blocked.
- Adding a Custom Command now scrolls to and focuses its name editor, so typing renames the command instead of the repository.
- Fixed completion-hook setup for Codex configurations without an existing notifier.
This release lays the groundwork for Agent Workflows — multi-step, multi-agent orchestrations that Prowl runs and supervises for you. The engine and CLI are ready to try today; the complete experience, including starting and managing runs from the UI, arrives together with the workflow interface in an upcoming release.
New
- Agent Workflows (early preview): define multi-step, multi-role workflows in YAML and run them with
prowl workflow run. Track progress with prowl workflow status, complete a step with prowl workflow done, and stop a run with prowl workflow cancel; validate a definition file or inspect the schema with prowl workflow validate and prowl workflow schema. The start sheet, Settings page, and built-in workflows ship in a later release.
- A workflow status indicator now appears in the toolbar for the selected worktree. Hover or pin it to see the run's active role, current step, repeat progress, and any attention that needs your input.
prowl agents dispatch sends a new task into an agent that is already running in a pane, without restarting it, so you can queue a follow-up request once the agent goes idle.
Fixed
- Creating a new tab or split, or launching an Agent Profile, no longer fails or leaves a dead shell when the display is asleep.
- Worktree rows for a blocked agent now show a "needs input" icon instead of the running spinner, so a blocked agent no longer looks like it is still working.
This release focuses on letting Prowl and your agents know what other agents are actually doing, plus new CLI and Settings tooling for skills and panes.
New
- Agent coordination from the CLI:
prowl create tab|pane --profile <name> --prompt - launches an Agent Profile with a kickoff prompt and returns a dispatch receipt; prowl agents wait --dispatch <id> blocks until the worker reports prowl agents dispatch-complete, and prowl agents wait <pane> --until idle|blocked|changed|exit waits on an observed pane state. Agents can report their own events with prowl agents signal, and prowl profiles list shows the configured Profiles with their runtime availability.
- Native completion-signal hooks for all eight supported runtimes (Claude Code, Codex, GitHub Copilot, Droid, Qoder, Pi, Oh My Pi, OpenCode) when launched from a Profile, so
agents wait knows precisely when a turn ends or an agent needs input instead of guessing from the screen. Nothing is written to your runtime configuration; the hooks live only for that launch.
- Prowl's bundled skills (
prowl-cli) can be installed with prowl skills install, or from the Agent Skills section on the new Settings → Agents → CLI & Skills page. Both link the bundled skills into your Claude, Codex, or shared ~/.agents skill folders and show the same per-target status.
prowl create pane <anchor> --direction right|left|up|down opens a split against an explicit anchor pane, and every pane now exports PROWL_PANE_ID so an agent or script can address its own pane without guessing from focus.
Improved
- Settings now has an Agents group: Profiles moved there, and the new CLI & Skills page takes over the
prowl CLI install from Advanced.
Fixed
- Claude Code's periodic idle-prompt notification was misread as "needs input", which could make
agents wait hang on an already-idle pane; freshly launched Profile agents are also detected as idle promptly instead of timing out.
- Pi's background sub-agent activity is now recognized as Working instead of appearing idle.
- A Claude pane with an active spinner above a queued multi-line message was incorrectly reported as idle.
This release adds per-repository diffing for workspace children and unifies the Prowl CLI's target syntax.
New
- Workspace child rows now support diffs: click their
+N/-M badge or use the context menu's Show Diff / Show Outgoing Changes. Diff shortcuts (⌘⇧Y, ⌥⌘⇧Y), the View menu, and Command Palette now follow the selected workspace child, not just worktrees.
- The Prowl CLI accepts
pN/tN pane and tab handles directly in any target position, and adds action-first prowl create tab and prowl close commands. The older tab/pane lifecycle commands still work but print a deprecation warning.
Fixed
- Fixed terminal tab colors occasionally resolving incorrectly when SwiftUI rendered them asynchronously off the main thread.
Improved
- Notification and update controls in the toolbar are now grouped together for a cleaner layout.
Improved detection accuracy for Claude Code sessions, plus a new CLI command for reading agent results.
New
prowl agents read <pane> (CLI): get an immediate, read-only snapshot of a Codex or Claude Code pane's current status and completed result text. Use --result-only to pull just the trusted final output, e.g. for piping into scripts.
Fixed
- Claude Code panes with a long todo list no longer flash to Idle while a spinner is still actively running.
- Claude Code panes waiting on a background agent, or showing multi-word elapsed-time status text, are now correctly detected as working instead of Idle.
- Cmd-clicking a terminal link in Canvas no longer requires repeated clicks or misfires on the wrong link.
This release streamlines the toolbar layout and improves the accuracy of agent status detection for Claude and Codex.
New
prowl agents --json can now include a detection_reason field, showing why an agent was classified as blocked, working, or idle.
- Added
prowl read --source detection, which reads the same screen buffer Prowl uses internally for agent state detection.
Improved
- Unified the top toolbar across Normal, Shelf, and Canvas modes around Agents + Quick Launch, with the notifications bell surfaced separately. The branch/folder name was removed from the toolbar since it's already shown in the sidebar.
- Rename Branch moved from the toolbar into the worktree's context menu (and an app-level sheet), keeping its configurable shortcut.
Fixed
- Codex's directory-trust, hook-review, and first-run sign-in prompts are now correctly detected as blocked instead of being read as idle or working.
- Fixed Claude's history-search viewer being misdetected as idle after its filter/navigation footer text changed.
New
- Agent Profiles now cover the full 15-runtime catalog, with per-runtime controls for model, reasoning effort, approval mode, and Dedicated Home shown only when that runtime actually supports them.
Changed
prowl handoff now always requires an explicit briefing choice: pass --brief - with agent-authored content, or --no-brief for a context-only handoff. The automatic recorded-session fallback briefing has been removed.
Fixed
- Fixed a crash that could occur when two close-confirmation dialogs tried to appear at the same time.
- Pi's animated braille "Working..." loader is now recognized, so its status no longer gets stuck showing idle or blocked while it's actually working.
- Agent status detection (working/idle/blocked) no longer gets confused by old response text left on screen; only the live status region is checked.
- Tabs and splits launched from the Agents menu now show the correct runtime icon right away instead of a generic terminal icon.
Improved
- Reduced CPU usage from idle-agent monitoring and sidebar updates, and removed tab-bar flicker caused by animated agent titles.
- Uncommitted line-change badges no longer silently undercount large untracked files; when some files can't be counted, the badge shows
+N… and explains what was omitted.
This release introduces Agent Profiles — reusable presets for launching coding agents — along with related launcher and Settings improvements.
New
- Agent Profiles: create named launch presets for Claude Code and Codex with a chosen model, reasoning effort, execution mode, tab/split placement, extra arguments, and per-profile environment variable overrides (for example, pointing a profile at a different API endpoint). Manage them in Settings → Agents, each with its own custom icon and an optional isolated account/home.
- Launch a profile from the toolbar Agents menu, its new one-click quick-launch segment (instantly launches your Recommended profile), or the Command Palette's "Launch Agent" rows.
- Clear a recorded keyboard shortcut with the new Clear button shown while remapping — the shortcut stays unset until you press Reset.
Improved
- Settings now uses native macOS navigation chrome (sidebar and back button) throughout.
- The Agents popover groups launcher rows under one header and dims agents whose CLI isn't found on your PATH, showing why and rechecking automatically when you reopen it.
- A profile's environment variables and dedicated account now apply only to the agent it launches — manually running
codex or claude in the same tab no longer inherits them.
Fixed
- Fixed a crash when adding or removing rows in a profile's Environment Variables table.
- Fixed several brand icons (Claude Code, Cursor, GitHub Copilot, and others) rendering as a tiny dot in the Default Agent Profile picker.
Prowl 2026.7.29 adds automatic repository icon detection and an on-device icon suggestion tool, along with a reworked sidebar context-menu system.
New
- Newly added repositories now get a product icon detected automatically in the background (Apple, Android, Flutter, React Native, Web, Unity, Tauri, and more project kinds are recognized). This can be turned off in Settings → Appearance → Repository Icons ("Detect project icons automatically").
- Repository Icon menu gains Suggest an Icon…, which recommends SF Symbols on-device based on your README or package metadata, with alternates and a "Regenerate" option.
- Sidebar context menus for repositories and worktrees have been reorganized: worktree rows get
New Terminal Tab (always opens at the worktree root), Stop Running Script, Copy Branch Name, Open Pull Request, and a Close All Tabs action grouped with Archive/Delete.
- The
PR #N tag in the sidebar is now a clickable link that opens the pull request.
- The Active Agents context menu gains a Session group with Copy Session Path and Reveal Session in Finder, for agents that keep a native session log on disk.
Fixed
- Canvas tabs opened from the sidebar now focus correctly on creation.
- Grok session log paths now resolve to the correct transcript file.
New
- Outgoing Changes: a new mode of the diff window showing the committed changes a worktree's branch would contribute to a pull request. Open it with ⌥⌘⇧Y, View → Show Outgoing Changes, the Command Palette, a worktree's context menu, or the new Uncommitted / Outgoing toggle in the diff window's toolbar.
- Outgoing Changes works without an open pull request: the comparison base is resolved through a clear priority order — PR base, then the repository's Base Branch setting, then the default branch — and the base in effect is always labeled in the window title and file list.
- The sidebar's expand/collapse header button now has a third state: Collapse All → Expand Active (expands only repositories and workspaces that have open tabs) → Expand All.
- Tab count badges now follow the sidebar level: a collapsed repository shows its total open-tab count on the header, and expanding it moves the count onto the individual worktree rows.
Fixed
- Fixed the text cursor jumping to the end of the field while editing a custom command in the middle of its text.
- Fixed tab count badges getting visually compressed next to long branch names.
This release introduces cross-agent handoff, letting you pass work from one coding agent to another without losing context.
New
- Hand off a task between coding agents: open the command palette and choose "Hand Off…", or use the new Agents capsule in the worktree toolbar. The current agent writes a briefing, then the chosen agent launches in a background tab to continue — your current tab stays focused, and a notification lets you jump over once it's ready. Any detected agent can hand off its work; the receiving side currently supports Claude Code and Codex, with more agents coming in future releases.
- Handoffs are also available from the CLI: run
prowl handoff save or prowl handoff to <agent> inside an agent's terminal to capture and hand off its current state.
- Right-click a row in the Active Agents panel for a new context menu: Hand Off…, Mark as Read, Copy Path, and Reveal in Finder.
Improved
- The Agents capsule now shows the launch alias you actually used to start an agent (e.g. "omp") instead of always showing the underlying agent name, and got a cleaner look (plain font, sparkles icon for the no-agent state).
- The Hand Off waiting screen is now non-modal, so you can keep using the terminal — for example to approve a permission prompt — while a briefing is being prepared.
Fixed
- Fixed handoff requests occasionally being attributed to the wrong pane or session.
- Fixed pre-transport handoff CLI errors not rendering as proper JSON output.
New
- Global Custom Commands: create custom commands in Settings that apply across all repositories instead of duplicating them per repo. Repository-local commands still take precedence if a name or shortcut conflicts.
- Prowl now detects Qoder CLI as a coding agent, so it shows up in Active Agents and
prowl agents with correct working/blocked status.
Improved
- Custom Commands settings now let you enable/disable local commands and opt out of a Global command per repository (Repo Settings → Custom Commands → This Repo checkbox), with a clearer insertion indicator while reordering.
- If a repository-local command and a Global command share the same name, Prowl now shows both instead of hiding one.
Fixed
- Ask-style permission prompts from the OMP agent no longer show as "working" — they're now correctly reported as blocked until you respond.
- Cancelling a running shell command is more reliable and no longer waits on stream teardown to terminate the process.
Grok Build agent detection and a reworked branch-deletion memory setting.
New
- Prowl now detects Grok Build (xAI's
grok CLI) as an agent, showing its icon in the tab and tracking status transitions between idle, working, and blocked (e.g. bash approval, ask-user prompts).
Improved
- When manually deleting a worktree, the "Also delete local branch" toggle now remembers your last confirmed choice for next time.
- Automatic branch cleanup (for merged PRs and expired archived worktrees) is now controlled by its own separate setting in Worktree Settings, independent of the manual delete toggle.
New
prowl list and prowl agents now show short handles (t1, p1, ...) for tabs and panes in their text output, and --tab/--pane selectors accept these short handles as well as UUIDs, making it much easier to reference panes across CLI calls. JSON output is unchanged and still uses full UUIDs.
prowl agents can now report a detected agent's native session details—session ID, transcript path, and detection confidence—for supported CLI agents (Claude Code, Codex, Amp, Copilot, and others), without requiring any hook setup.
Fixed
- Active Agents no longer shows the wrong pane's title when multiple agents run in split panes of the same tab; each row now reflects its own pane's title.
- Worktree deletion errors are now surfaced instead of being silently treated as success, and worktrees that failed to delete due to a locked or stuck registration no longer reappear after the next refresh.
- Repository roots opened through a symbolic link are now resolved to their canonical Git root, so branches and worktrees load consistently no matter which path was used to open the repo.
- The sidebar now updates correctly after running
git init inside a plain (non-Git) folder that was already open in Prowl.
Improved
- Removed the non-functional Update Channel picker from Settings → Updates, since Prowl has shipped a single release channel for a while.
This release focuses on notification control, PR status reliability, and a few editor and terminal integration additions.
New
- Added a notification sound picker in Settings → Notifications: choose from system sounds, "Prowl Classic", or turn sounds off entirely. Selecting a sound plays a quick preview.
- Added a "Mute notifications for the active pane" setting (on by default): when a notification comes from the pane you're already viewing, the banner, sound, and dock bounce are skipped since you're already looking at it. Turn it off in Settings → Notifications if you want notifications even while viewing the pane.
- Terminal sessions now report
TERM_PROGRAM=prowl (with TERM_PROGRAM_VERSION), so shell scripts and coding agents can detect they're running inside Prowl.
- Added Open actions for Zed Preview, IntelliJ IDEA EAP, and Nova in the worktree "Open" menu.
Fixed
- Fixed PR status badges flickering to "Blocked" or briefly disappearing during refresh, including when GitHub temporarily reports an unresolved mergeable state.
- Fixed the Diff window (⌘⇧Y) following the system appearance instead of Prowl's own Dark/Light/System setting.
- Fixed symlinked config files (e.g.
settings.json linked into a dotfiles repo) being replaced with a regular file on save, breaking the symlink.
- Fixed spurious "not a git repository" errors when your login shell isn't zsh or bash (nushell, pwsh, csh, sh/dash/ksh), which could also make Prowl fail to detect
gh.
New
- The diff view now shows a render-in-progress indicator when diffing and painting large files takes a moment, so it's clear the app hasn't stalled.
Fixed
- Fixed a crash that could occur during repository loading when duplicate worktree paths were detected.
- Fixed the diff view getting stuck showing a render error with no way to recover; refreshing or reselecting the file now retries the render.
- Fixed a race condition where switching worktrees or refreshing quickly could leave stale diff content on screen.
Improved
- Selecting a file in the diff view now applies immediately instead of always waiting for a fixed delay; only rapid successive switches between files are debounced, avoiding the flash you'd see when flicking through several files quickly.
Smarter worktree creation — Prowl now suggests branch names using Apple's on-device AI, and the refreshed Add popover lets you clone remote repos without leaving the app.
New
- AI branch name suggestions: When creating a new worktree, Prowl uses Apple's on-device Foundation Model (macOS 26+) to suggest a contextual branch name based on your active terminals and repo conventions. Click "Use" to accept, or type your own name — the suggestion never overwrites what you have typed. Falls back to random adjective-animal names when the model is unavailable.
- Clone repository from the Add popover: The "Add..." toolbar button now opens a custom popover with a dedicated Clone option. Paste a git URL (auto-filled if your clipboard already contains one), choose a destination, and Prowl clones and selects the repo automatically. Drag-and-drop from Finder onto the drop zone also works.
Improved
- CI check names in the PR status popover now show an underline and a pointer cursor on hover, making it clearer they are clickable links to the build run.
Fixed
- Pressing Cmd+W while in fullscreen mode no longer leaves the screen black. Prowl now keeps the window visible instead of hiding it when fullscreen is active.
- PR status no longer surfaces pull requests from unrelated forks that happen to share the same branch name as your local branch.