Settings

Non-messaging settings for the PwrAgent desktop app. Messaging configuration lives under each provider page — see Messaging → Providers.

Everything below is reachable from Settings in the desktop app. The left-nav panes, in the order the app lists them:

Pane What lives there
General Appearance, Attention lens, quit confirmation, notifications, updates, pasted-image budget, PDF analysis.
Applications Editor and terminal discovery.
Plugins MCP servers for the selected Codex profile.
Profiles PwrAgent profile management; see Desktop → Multiple profiles.
AI Providers Every agent backend on one screen — Codex discovery and auth, plus Gemini / Grok / Kimi / Qwen.
Usage & Pricing Thread cost display and spend / tool-output alerts.
Messaging Per-provider config; see Messaging → Setting up providers.
Access Control Role-based access for messaging actors and destinations.
Git git and gh discovery, background PR status, PR automation.
Federation Connecting this profile to other PwrAgent instances.
Worktrees Where managed worktrees get stored.
Thread Management Copy or move Codex threads between Codex profiles.
Archived Threads Restore threads you archived; grouped by project.
Experimental Opt-in features that are still in flux.
Troubleshooting DevTools, protocol capture, CPU and heap monitoring.
About Build info, the in-app changelog, and license attribution.

There is no separate “Models” pane. Codex discovery, Codex auth profiles, and the ACP agents all live under AI Providers.

General

Desktop-wide defaults that don’t fit anywhere more specific:

Pasted images — patch budget

When you paste a large image into the composer (a screenshot, a diagram, a photo from your clipboard), PwrAgent resizes it before forwarding to the model so it costs a predictable amount of context. Images are converted into model-token-friendly 32×32 pixel patches; this setting caps the patch count before per-model multipliers apply.

Pick the budget based on the typical fidelity you need. Most screenshots read fine at the default; bump it up when the model needs to read small text (UI labels, code snippets in screenshots, tiny CLI output). Drop it down if you regularly paste enormous images and want to keep the per-turn token cost low.

Option What it means
1024 patches Caps square images at about 1024 32px patches before model-specific multipliers.
1536 patches (default) Limits large pasted images to roughly 1536 image patches. Sensible balance for typical screenshots.
4096 patches Allows roughly a 2048×2048 square image before model-specific multipliers.
Actual size Preserves pasted image dimensions before upload.
Settings → General panel showing the pasted image patch budget options
Settings → General → Pasted images. The Image patch budget picker controls how aggressively large pasted images are downscaled before forwarding to the model.

The same patch budget affects messaging-side image attachments similarly. See Driving an agent from a messenger → Image upload profile for the messaging-side knob.

Application discovery

PwrAgent shells out to command-line tools you’ve already installed. Settings → Applications covers the two it opens on your behalf:

Tool Used for
Editor Opening the workspace and individual file:line jumps in your IDE / editor. macOS discovery covers VS Code, Cursor, Zed, Sublime, JetBrains’ IntelliJ IDEA (and the rest of the IntelliJ family — PyCharm, WebStorm, GoLand, RubyMine, …), Vim, Emacs. Linux discovery covers the same editors where their Linux builds register a launcher (code, cursor, zed, subl, the JetBrains shell scripts, vim, emacs, etc.).
Terminal Opening the thread’s workspace in a terminal window. macOS picks from Terminal.app, iTerm2, Ghostty, Warp, kitty, Alacritty, WezTerm, Hyper, and a few more. Linux discovers gnome-terminal, konsole, xterm, etc.

git and gh moved. They’re on the Git pane now, alongside the pull-request settings that depend on them.

If the auto-discovery picks the wrong binary or doesn’t find one, override the path here. Paths are per-tool; an explicit value beats the auto-discovered one.

Settings → Applications panel showing discovered terminal, editor, git, and gh CLI paths
Settings → Applications. PwrAgent auto-discovers your editor and terminal. A green status indicator next to each row means the tool was found. (Captured on an earlier build that still carried git and gh here; those rows live on the Git pane today.)

Agent-backend discovery is its own thing — see AI Providers below.

Plugins

Settings → Plugins inspects and repairs the MCP servers configured for this PwrAgent profile’s selected Codex profile. The pane shows which Codex profile it’s reading, that profile’s CODEX_HOME, and one row per configured server.

Per server: Relogin replaces expired OAuth credentials, and Remove deletes only that server’s configuration from the selected Codex profile. The pane-level Reload config button re-reads the installed MCP configuration and exposes it to loaded threads on their next turn — the fix for “I added a server and the agent can’t see it.”

If you change the selected Codex profile, restart PwrAgent before managing MCP servers for the new one; the pane says so rather than writing to the wrong profile.

Profiles

PwrAgent has two profile mechanisms — PwrAgent profiles (this panel) for desktop-app state and Codex auth profiles (under AI Providers → Codex) for isolating Codex CODEX_HOME directories. Both compose; see Desktop → Multiple profiles for the full conceptual model.

The Profiles panel lets you list, create, switch between, and delete PwrAgent profiles. Each row shows the on-disk profile dir, the Codex auth profile bound to it, and which one’s active / configured to launch by default.

Settings → Profiles panel listing PwrAgent profiles with the active one highlighted
Settings → Profiles. Active profile is highlighted; New profile creates a fresh ~/.pwragent/profiles/<name>/ directory and switches to it on next launch.

Launches via --profile <name> (or PWRAGENT_PROFILE=<name>) still override the startup default — see Desktop → Launching a profile from the command line for the CLI launch flag.

Archived threads

Threads you archive disappear from the sidebar but stick around on disk — Settings → Archived Threads is where you go to restore them.

Threads are grouped by project folder. Within each project, archived rows sort by most-recently-archived first, capped at 20 threads per project to keep the list scannable. Each row carries the thread’s title, the branch it last lived on, the date it was archived, and a Restore button that puts the thread back in the active list (back to whichever workspace — Local or Worktree — it was in when it was archived).

The grouping is resilient to older corrupted managed-worktree rows — paths like ~/.codex/worktrees/<id>/PwrSnap collapse back under the PwrSnap project header instead of fragmenting one section per worktree id.

The list is scoped to the active PwrAgent profile. Switching profiles (Settings → Profiles, or the Profiles app menu) shows only that profile’s archived threads.

Thread Management

Settings → Thread Management moves Codex threads between Codex auth profiles — the escape hatch for “I started this in the wrong profile” or for splitting a shared profile into work / personal.

Pick the source Codex profile, select threads, and Copy or Move them into the target profile. Transfers are validated by replaying the thread’s history into the target before anything is removed from the source, and archived threads are safeguarded along the way. After a move, the thread shows up in the target profile’s list the next time you’re running under it.

Worktrees

PwrAgent stores managed worktrees outside of your repo so they don’t clutter your working checkout. The default storage location is ~/.pwragent/worktrees/.

You can change the location in Settings → Worktrees → Worktree storage location. Pick a path on the same filesystem as your repos — git worktree requires that, and putting the storage on a different volume will produce surprising errors at handoff.

Settings → Worktrees panel showing the default storage location
Settings → Worktrees. Default storage location for managed git worktrees (~/.pwragent/worktrees/). Change to any path on disk if you want them somewhere else.

When PwrAgent creates a worktree for a thread, it lands at <worktree-storage>/<hash>/<project-folder-name> where <hash> is a short timestamp-derived directory. You’ll see the full path on the thread’s status card.

AI Providers

Settings → AI Providers is the one screen for every coding agent PwrAgent can drive. Codex is the default and sits at the top; below it, one section each for the Agent Client Protocol (ACP) agents — Gemini CLI, Grok, Kimi Code, and Qwen Code. See Agent backends for what each one is, what it needs installed, and what differs between them.

The pane has three parts.

New thread defaults

Per-provider baselines — default model, reasoning effort, access mode, and service tier — applied to new threads and launchpads. They never override a choice already saved on an existing thread. There’s also a thread-migration tool here for moving existing threads onto a different model in bulk.

Codex

PwrAgent is a client of Codex App Server — it doesn’t ship its own copy. The desktop discovers Codex from any of:

On launch, PwrAgent scans those sources, picks the newest working version it finds, and uses that as the Codex App Server backing your threads. The section shows the Codex path (blank means auto discovery), Available paths with the discovered candidates and their versions, the Auth profile picker, and a Connection test.

Settings → AI Providers panel showing Codex App Server version, source, and model list
Settings → AI Providers → Codex. Shows the detected Codex App Server version, the source it was discovered from (Codex Desktop or CLI), the active OpenAI account, and the picker for switching Codex auth profiles. (Captured while this pane was still labeled Models.)

Keeping Codex up to date

Because PwrAgent uses the newest working install it finds, it inherits whatever updates you apply to the underlying Codex installation. That means:

Either source on its own is fine. You don’t need to keep both current; PwrAgent picks whichever is newest at launch.

Authentication

PwrAgent does not ship its own Codex authentication flow. It piggybacks on whatever Codex auth state your underlying install has.

If you need to log out and back in, or your tokens have expired and PwrAgent shows you signed out:

  1. Open Codex Desktop.
  2. Sign in / re-authenticate there.
  3. Restart PwrAgent (or wait for it to pick up the refreshed credentials).

There’s no equivalent flow in PwrAgent’s UI — by design, since duplicating the auth state would mean it could diverge from Codex Desktop’s truth.

The same principle applies to every ACP agent: you sign in to the CLI itself (/login in Kimi, /auth in Qwen, a browser round-trip for Gemini and Grok), and PwrAgent inherits it.

Testing the connection

The Connection test calls the discovered Codex App Server’s health endpoint and reports the version, the authenticated account (if any), and any error from the App Server itself. If it fails:

The ACP agents

ACP agents are third-party executables that speak a coding-agent protocol. They are not raw model providers and they do not replace the built-in Codex backend. PwrAgent does not install them — you install the CLI yourself (see Agent backends → What each one needs installed), sign in to it, then come back and click Refresh.

Each provider gets its own section, headed by its name and a status chip:

Chip Means
Discovered Found and usable.
Discovered - setup required Found, but the agent still wants you to authenticate.
Not installed Nothing found on this machine.
Detected · unavailable A matching binary exists but failed the protocol probe.
Detected · check timed out The probe timed out — retryable, hit Re-probe.
Discovery failed / Unavailable Discovery errored; the section shows the reason.
Disabled You turned the provider off.

The controls that matter day-to-day:

Kimi has one extra wrinkle: if you ever installed the retired Python kimi-cli, PwrAgent flags the Provider collision, excludes those binaries from model discovery, and offers a copyable install command for the current Kimi Code.

The access-mode boundary is intentionally narrow: PwrAgent can mediate the ACP filesystem and terminal requests that pass through the client protocol, but it cannot sandbox what a third-party agent process does internally outside those requests. Install only agents whose source and behavior you trust.

Enabled providers show up in the Provider picker on the desktop launchpad and in messaging’s new-thread flow (see Driving an agent from a messenger → New Thread starter).

Operator-facing wrinkles worth knowing:

Contributor-facing implementation details live in the app repository at docs/acp-registry-backends.md.

Usage & Pricing

Settings → Usage & Pricing controls how thread costs are shown and which usage patterns interrupt you. This is where thread pricing lives now — it graduated out of Experimental.

Tool-call tracking (the rail’s Tool calls tab and the incident explorer) is a separate Experimental toggle — see below.

Access Control

Settings → Access Control is role-based access control for messaging: which actors may invoke which capabilities against which destinations. The pane renders an Authorization graph over the capability catalog so you can see the permissions rather than infer them, and every decision is auditable.

It is fail-closed on invalid policy — a policy the app can’t parse denies rather than defaults open. Existing setups keep working unchanged until you define a policy; this is opt-in, not a migration that locks you out.

Git

Settings → Git owns the two CLI tools PwrAgent shells out to for repository work, plus everything pull-request-shaped:

Federation

Settings → Federation connects this PwrAgent profile to other PwrAgent instances so they can see and drive each other’s work. Enrolled identities are exchanged over an encrypted control channel.

The pane walks setup end to end: Configuration (the federation mode), PwrAgent Encrypted Transport, Invites and Gateway Enrollment for enrolling a peer, Connection for runtime state, Federation Instances for the peers themselves, Recent Federation Activity for diagnostics, and per-transport setup for Tailscale Serve / Funnel and Cloudflare.

Federation is off until you configure it. Connected peers appear in the Profiles app menu, and federated threads open in remote viewer windows alongside your local ones.

Experimental

Features that may change shape or be removed without notice. The panel currently hosts:

And a Soon to be discontinued group for features being phased out:

Settings → Experimental panel showing experimental feature toggles
Settings → Experimental. Features here don't carry stability guarantees and may change shape between releases. (Captured on an earlier build — the toggles have turned over since.)

Features cycle through this panel before promotion — thread pricing graduated to its own Usage & Pricing pane this way.

Troubleshooting

Settings → Troubleshooting is the diagnostics drawer:

Most of this needs Developer mode on under General.

See also