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 profileNamed 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 profileOr 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
| Role | Description |
|---|---|
implementor | Writes code to fulfill the task |
tester | Runs and writes tests, reports PASS/FAIL |
reviewer | Reviews the diff for correctness and quality |
fixer | Addresses feedback from failed tests or reviews |
merger | Resolves merge conflicts between parallel branches |
Fields per Role
| Field | Description |
|---|---|
agent | CLI command to use for this role (default: claude) |
directive | Full replacement for the role's default instructions |
directive_extend | Text 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 profileMerge Order
Profiles merge in order of specificity. Later sources override earlier ones:
- Built-in defaults
~/.workbench/profile.yaml(global).workbench/profile.yaml(project)--profileflag (explicit path)- 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.yamlto the repo so every team member uses the same agent configuration