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
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
Themes come from
BUILTIN_THEMES and apply by injecting CSS variables generated from the theme’s color map.
Notifications
Integrations
Two cards: Linear and Jira Cloud. Linear connects via a personal API key (must start withlin_api_). Once connected, two write-back settings appear:
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
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, markedPreview). Changing the provider only affects new sessions; active sessions keep theirs.
Authentication is per-provider with two modes:
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
RendersTeamMembersPage 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
RendersSubscriptionSettingsTab 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 thePluginBrowser 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 theSkillManager component. Scoped to the current workspace. No table of toggles.
Code Review
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.
MCP Servers
RendersMcpManagerTab 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:
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,
userDatapath (copyable). - Database — row counts for projects, chats, sub-chats.
- Developer Tools — React Scan toggle (loads
react-scanfrom a CDN, persisted inlocalStorage). - Quick Actions — Open userData, DevTools, Reload, Copy Info.
- Toast Testing — buttons that fire each toast variant.
debug.clearChats, debug.clearAllData, debug.logout) are wired up but not enumerated here — see agents-debug-tab.tsx.