# Agent Profiles & Variants Agent profiles let you define multiple named variants for each supported coding agent. Variants capture small configuration differences (e.g., planning vs. coding, model choice, sandbox/approval levels) you can quickly select when creating an attempt or sending a follow‑up. Profiles are used anywhere an agent runs: - Onboarding: pick your default agent and optional variant - Settings → General: set the default agent configuration - Create Attempt dialog: choose agent and variant per attempt - Follow‑ups: continue using the attempt's selected profile/variant ## Where To Configure Open Settings → Agents. You can edit agent configurations in two ways: - Form editor: guided fields per agent ![coding Agent Configurations](/images/coding-agent-configurations.png) - JSON editor: edit the underlying `profiles.json` directly ![coding Agent Configurations JSON Editor](/images/coding-agent-configurations-json.png) The page shows the exact file path where your config is stored (profiles.json). The app saves only your overrides; built‑in defaults remain available and cannot be deleted. ## JSON Structure The configuration file is a JSON object with an `executors` map. Each executor (agent) contains one or more variants. Every variant holds a single object for that agent with its options. Example (abridged): ```json { "executors": { "CLAUDE_CODE": { "DEFAULT": { "CLAUDE_CODE": { "dangerously_skip_permissions": true } }, "PLAN": { "CLAUDE_CODE": { "plan": true } }, "ROUTER": { "CLAUDE_CODE": { "claude_code_router": true, "dangerously_skip_permissions": true } } }, "GEMINI": { "DEFAULT": { "GEMINI": { "model": "default", "yolo": true } }, "FLASH": { "GEMINI": { "model": "flash", "yolo": true } } }, "CODEX": { "DEFAULT": { "CODEX": { "sandbox": "danger-full-access" } }, "HIGH": { "CODEX": { "sandbox": "danger-full-access", "model_reasoning_effort": "high" } } } } } ``` Notes: - Variant names are case‑insensitive and normalized to SCREAMING_SNAKE_CASE. - `DEFAULT` is reserved and always present; you can add more variants (e.g., `PLAN`, `FLASH`). - You can't remove built‑in executors or their built‑in variants, but you can override their values or add new variants. ## Per‑Agent Options (quick reference) - CLAUDE_CODE - `plan: boolean` – enable planning mode - `claude_code_router: boolean` – route across multiple Claude Code instances - `dangerously_skip_permissions: boolean` – skip permission prompts (unsafe) - Docs: https://docs.anthropic.com/en/docs/claude-code/cli-reference#cli-flags - GEMINI - `model: "default" | "flash"` - `yolo: boolean` – run without confirmations - Docs: https://google-gemini.github.io/gemini-cli/ - AMP - `dangerously_allow_all: boolean` – allow all actions (unsafe) - Docs: https://ampcode.com/manual#cli - CODEX - `sandbox: "read-only" | "workspace-write" | "danger-full-access"` - `approval: "untrusted" | "on-failure" | "on-request" | "never"` - `oss: boolean`, `model: string`, `model_reasoning_effort: "low" | "medium" | "high"`, `model_reasoning_summary: "auto" | "concise" | "detailed" | "none"` - Docs: https://github.com/openai/codex - CURSOR - `force: boolean`, `model: string` - Docs: https://docs.cursor.com/en/cli/reference/parameters - OPENCODE - `model: string`, `agent: string` - Docs: https://opencode.ai/docs/cli/#flags-1 - QWEN_CODE - `yolo: boolean` - Docs: https://qwenlm.github.io/qwen-code-docs/en/cli/index Common options supported by several agents: - `append_prompt: string | null` – text appended to the system/prompt - `base_command_override: string | null` – override the underlying CLI command - `additional_params: string[] | null` – extra CLI args Use these carefully; "dangerously_…" flags bypass confirmations and can perform destructive actions. ## Selecting Defaults vs. Per‑Attempt - Default: Set under Settings → General → "Default Agent Configuration." - Per Attempt: Use the create attempt dialog to pick a different agent/variant for that run. ## MCP Servers MCP (Model Context Protocol) servers are configured per agent under Settings → MCP Servers. This is separate from profiles but complements them. See the [MCP Support](/docs/user-guide/vibe-kanban-mcp-server) guide.