Profiles

Save per-project agent configurations with profiles — assign agents to roles and customize directives.

Overview

Profiles configure which agent CLI and instructions are used for each pipeline role. When no profile exists, built-in defaults apply (Claude Code for all roles, no custom directives).

Creating a Profile

wb profile init                                            # create .workbench/profile.yaml from defaults
wb profile init --global                                   # create ~/.workbench/profile.yaml
wb profile init --set reviewer.agent=gemini                # create with inline overrides
wb profile init --set reviewer.agent=gemini --set tester.directive_extend="Run with -x"

Named Profiles

Create multiple profiles for different workflows:

wb profile init --name fast --set reviewer.agent=gemini --set implementor.agent=codex
wb profile init --name security --set reviewer.directive="Focus only on security vulnerabilities."
wb run plan.md --profile-name fast                         # use a named profile

Named profiles are stored as profile.<name>.yaml alongside the default profile.yaml.

Customizing Roles

Use wb profile set to update individual fields:

wb profile set reviewer.agent gemini                       # update default profile
wb profile set tester.directive_extend "Run pytest with -x flag."
wb profile set reviewer.agent codex --name fast            # update a named profile

Or edit .workbench/profile.yaml directly:

roles:
  reviewer:
    agent: gemini
    directive: "Focus on security and correctness."
  tester:
    directive_extend: "Also check edge cases for null inputs."

Use directive to replace the default instructions, or directive_extend to append to them.

Profile Fields

Roles

RoleDescription
implementorWrites code to fulfill the task
testerRuns and writes tests, reports PASS/FAIL
reviewerReviews the diff for correctness and quality
fixerAddresses feedback from failed tests or reviews
mergerResolves merge conflicts between parallel branches

Fields per Role

FieldDescription
agentCLI command to use for this role (default: claude)
directiveFull replacement for the role's default instructions
directive_extendText appended to the default instructions (cannot be combined with directive)

Viewing and Comparing

wb profile show                    # print resolved profile
wb profile show --name fast        # show a named profile
wb profile diff                    # show differences from defaults
wb profile diff --name fast        # diff a named profile

Merge Order

Profiles merge in order of specificity. Later sources override earlier ones:

  1. Built-in defaults
  2. ~/.workbench/profile.yaml (global)
  3. .workbench/profile.yaml (project)
  4. --profile flag (explicit path)
  5. CLI flags (--*-directive)

Named profiles (--profile-name) replace the default filename at each level.

Directive Overrides

Override the instructions given to any agent role directly from the CLI, without modifying the profile:

wb run plan.md --reviewer-directive "Focus only on security issues."
wb run plan.md --tester-directive "Run pytest with -x flag, fail fast."

Available flags: --implementor-directive, --tester-directive, --reviewer-directive, --fixer-directive.

These are appended to the role's instructions and take precedence over profile values for that run.

When to Use Profiles

  • Speed-optimized — use Gemini for implementation (faster output) and Claude for review (thorough analysis)
  • Cost-optimized — use a less expensive agent for testing and fixing, reserve the most capable agent for implementation
  • Provider diversity — spread work across providers to avoid rate limits on large plans
  • Team consistency — commit .workbench/profile.yaml to the repo so every team member uses the same agent configuration