Skip to content

Profiles

Profiles let you configure different reviewer behavior for different agents. A profile targeting coder subagents can use a different model, scrutiny level, and tool visibility than the profile targeting the main orchestrator agent.

How profiles work

defaults and profiles accept the same configuration keys. Settings resolve in order: server defaults → defaults → first matching profile. Each layer deep-merges on top of the previous.

defaults:
  model: gpt-5.4
  api_key: your-provider-key
  profile_id: general

profiles:
  code-review:
    agents: [coder, web-dev]
    model: claude-sonnet-4-6
    tools:
      output_visible: [Read, Edit, Write]
      write_review: [Edit, Write]
  research:
    agents: [orchestrator]
    model: gemini-2.5-pro

The agents key

Each profile requires an agents list to activate. Without it, the profile does nothing.

The agents list contains agent names that this profile should match:

  • orchestrator — the main Claude Code agent (default name)
  • Any subagent name (e.g., coder, web-dev, research)
  • Any CLI agent name from claude --agent <name>

First match wins — if an agent matches multiple profiles, only the first one applies.

agents in defaults vs. profiles

The agents key behaves differently in defaults and profiles:

In defaults: Controls which agents get reviewed when no profile matches them. Omit it to review all agents. List specific names to only review those agents by default.

In profiles: Controls which agents this profile applies to. Required for the profile to activate.

An agent not listed in defaults.agents can still be reviewed if a profile targets it. The agents key in defaults is a routing decision, not a gate.

What profiles can override

A profile can set any key that defaults accepts:

Key Effect
model Different reviewer model
api_key Different provider credentials
profile_id Different server-side adversary profile
system_prompt Completely custom reviewer prompt
system_prompt_mode "replace" (default) or "append"
scrutiny_level Different starting scrutiny (1–5)
tools Different tool visibility and enforcement
cycle Different context cycling thresholds
include_claude_md Whether to forward CLAUDE.md to this reviewer
web_search Whether this reviewer can use web search
model_tuning Whether to apply provider-specific prompt adjustments

Deep merge behavior

For nested dicts like tools and cycle, the merge is key-by-key. A profile that sets tools.output_visible doesn't erase defaults.tools.pre_review.

Exception: system_prompt does not merge. A profile's system_prompt replaces the system prompt entirely — it does not inherit from defaults.system_prompt. The system_prompt_mode key controls whether it replaces or appends to the server profile's prompt, not the defaults prompt.

Example: full profile

profiles:
  bulk-processing:
    agents: [file-processor]
    model: gemini-2.5-flash
    scrutiny_level: 2
    tools:
      review_exempt: [Read, Glob, Grep]
      pre_review: [Bash]
      write_review: [Edit, Write]
    cycle:
      threshold_pct: 0.15

This configures a lightweight reviewer for a file-processing subagent: fast model, low scrutiny, most read-only tools exempt from review, but shell commands and file writes still reviewed.