Skip to main content
Settings live in the Settings dialog, organized into the tabs below. The Debug tab is only rendered in development builds (IS_DEV). The Subscription tab is admin-only, except when the team’s subscription is trialing, canceled, past_due, or absent — then non-admins can open it too.

Account

SettingDefaultWhat it does
Full NameCurrent user nameDisplay name on your account. Trimmed; 255 characters or fewer.
EmailRead-only. Shown for reference.
Profile pictureUpload an image (crop dialog) or remove the existing one.
Beta updatesOff (latest channel)Switches the auto-updater to the beta channel. Confirmation dialogs appear when enabling and when disabling while running a beta build.
Usage analyticsOn (analyticsOptOut = false)Shares anonymous usage data and crash reports. Activity stats cloud-sync is separate and stays on when this is off.
Sign OutCalls desktopApi.logout() on this device.
The Account tab also renders the Activity Dashboard between the profile card and Beta updates, and shows the app version (with Beta badge when applicable) and the bundled Claude Code version under the profile card. The Anthropic API key field used to live on this tab. It moved to AI & Model (see below) — agents-profile-tab.tsx keeps a marker comment where the section used to render.

Appearance

SettingDefaultWhat it does
Interface themeSystem preference (selectedFullThemeId = null)Pick a VS Code theme to apply to the whole UI, or follow system light/dark.
Lightpurple-lightTheme used when the system is in light mode. Only visible when Interface theme is System preference.
Darkpurple-minimalTheme used when the system is in dark mode. Only visible when Interface theme is System preference.
Themes come from BUILTIN_THEMES and apply by injecting CSS variables generated from the theme’s color map.

Notifications

SettingDefaultWhat it does
Desktop notificationsOnShow native notifications when an agent needs your attention or completes a task.
Notification soundSystem defaultSound to play with desktop notifications. The picker lists sounds returned by desktopApi.listNotificationSounds(); non-default sounds get a preview button.
Sound notificationsOnPlay a sound when an agent completes work in a background session.

Integrations

Two cards: Linear and Jira Cloud. Linear connects via a personal API key (must start with lin_api_). Once connected, two write-back settings appear:
SettingDefaultWhat it does
Update ticket on build completionOn (linearWriteBackEnabled = true)Post a summary comment and update the Linear ticket status when a build finishes.
Target statusFirst available state typeWorkflow state type to move the ticket to. Options come from Linear’s workflow states for the first team; falls back to completed / started / canceled.
Jira Cloud connects via site URL (e.g. yourcompany.atlassian.net), email, and an API token from id.atlassian.com/manage-profile/security/api-tokens. No write-back settings.

Git Provider

SettingDefaultWhat it does
Providergithub (seeded by the DB on first run)Pick GitHub or GitLab. Determines which CLI and authentication is used for browsing repos, opening PRs/MRs, and so on.
HostnameBlank (uses github.com / gitlab.com)Optional self-hosted hostname. Toggle Using a self-hosted instance? to reveal the input.
The first-run default comes from src/main/lib/db/index.ts, which inserts a gitProvider = 'github' row in user_settings if none exists.

AI & Model

Three sections in one tab: provider, authentication, model. Provider. Two options: Claude Code (Anthropic) and Codex (OpenAI, marked Preview). Changing the provider only affects new sessions; active sessions keep theirs. Authentication is per-provider with two modes:
ModeWhat it does
SubscriptionSign in via the provider’s CLI (claude login or codex login). The tab shows the current subscription status and warns if the CLI is missing.
API key (pay per use)Paste a key (sk-ant-… for Claude, sk-… for Codex). Saving a Claude key overrides an active subscription; usage is billed to the provider’s API account.
Model (scoped to the selected provider). Sources of truth: CLAUDE_MODELS and CODEX_MODELS in features/agents/constants/models.ts. Claude default: opus-4-7-1m (“Opus 4.7 (1M context)”). Other Claude options: Opus 4.7, Opus 4.6 (1M context), Opus 4.6, Sonnet. Codex default: gpt-5.4 (“GPT-5.4”). Other Codex options: GPT-5.4 Mini, GPT-5.3 Codex, GPT-5.3 Codex Spark, GPT-5.2.

Team Members

Renders TeamMembersPage from features/team-members. Controls on the page:
  • Team Name — inline edit (admin only). Max 255 characters, saved via teamMembers.updateName.
  • Member filters — search by name or email, role filter (all / admin / member), sortable by name, email, role, or join date. Paginated 25 per page.
  • Member rows — per-member actions: change role (admin only), remove member (admin only, opens confirmation dialog).
  • Invite teammate — opens the Invite modal for email invites (admin only).
  • Pending Invitations — separate list of outstanding invites (admin only).

Subscription

Renders SubscriptionSettingsTab from features/billing. Admin-only except for trialing, canceled, past_due, or unset subscription states. Controls:
  • Plan info card — shows the current plan name (Pro, Individual, Team, Enterprise) and a status badge (Trial / Active / Past Due / Paused / Canceled / Seats Exceeded). Trial end date appears when applicable. A plan-specific subtitle sits underneath (for example, “1 session every 5 hours” for Pro).
  • Team name and seat count — for team / enterprise plans.
  • Manage Subscription — admin only. Opens the Stripe billing portal (billing.createPortalSession) in your default browser.
  • Plan picker dialog — opens for pro / individual / trialing plans so you can switch plans without leaving the app.

Plugins

Browse and install workspace plugins via the PluginBrowser component; clicking a plugin opens the PluginDetailDialog. Scoped to the currently selected workspace. No table of toggles — this tab is a browser, not a preferences panel.

Skills

Manages Claude Code skills via the SkillManager component. Scoped to the current workspace. No table of toggles.

Code Review

SettingDefaultWhat it does
Open files in external editorOffWhen on, clicking a changed file opens it in your external editor instead of the built-in diff viewer.
This tab has exactly one toggle.

Storage

No preferences — this is a worktree-management view. It shows total disk used. Worktrees are grouped into three sections.
  • Active Sessions.
  • Archived Sessions.
  • Orphaned Worktrees.
Each group lazy-loads its rows when expanded. Per-row and select-all checkboxes feed a bulk Delete button with a confirmation dialog. A warning banner appears above 10 GB total.

MCP Servers

Renders McpManagerTab from features/mcp-manager: a header, status tiles, an installed-servers section, an Add custom callout, and a browse section. Each installed server row shows status (Connected / Failed / Needs auth / Connecting / Installed), name, description, version, and tool count. Per-row actions vary by state:
  • View tools / Hide tools — expand the row to list every tool the server exposes.
  • Fix — appears on Failed or Needs auth rows; opens the edit dialog so you can repair config or sign in.
  • Edit — only for custom servers. Opens the same edit dialog.
  • Remove — for non-protected servers; deletes the row.
  • Protected rows (e.g. purple-status, playwright) show a shield icon and cannot be removed.

Remote Control

Off by default (syncEnabled = false). The enrollment card explains what gets synced and offers a single Turn on Remote Control button. Once enabled:
SettingDefaultWhat it does
Pairing QR / URLQR code and copyable URL pointing at ${webUrl}/app/remote. Scan it from your phone to pair.
Device nameCurrent device labelVisible on your phone. Max 255 characters. Saved on blur.
Remote ControlOn (once enrolled)Master switch. Turning off stops snapshot pushes and command polling immediately.
StatusLive readout: connection state, last heartbeat (Xs/Xm/Xh ago), and sessions-synced count. Polled every 5 s.
Per the source: only session titles, device label, connection status, and the last 5 messages of each session are synced. Full chat history, tool calls, file contents, terminal output, and worktree paths stay on this device.

Debug

Dev-only tab (IS_DEV). Sections:
  • System Info — version, platform/arch, dev mode flag, protocol-handler registration status, userData path (copyable).
  • Database — row counts for projects, chats, sub-chats.
  • Developer Tools — React Scan toggle (loads react-scan from a CDN, persisted in localStorage).
  • Quick Actions — Open userData, DevTools, Reload, Copy Info.
  • Toast Testing — buttons that fire each toast variant.
Additional destructive mutations (debug.clearChats, debug.clearAllData, debug.logout) are wired up but not enumerated here — see agents-debug-tab.tsx.