Project Configuration (.waza.yaml)
The .waza.yaml file configures project-level defaults for Waza. Place it in your project root — Waza searches up the directory tree (max 10 levels) to find it.
Quick Start
Section titled “Quick Start”paths: skills: skills/ evals: evals/ results: results/
files: evalFile: eval.yaml taskGlob: tasks/*.yaml taskFileSuffix: .yaml
defaults: model: claude-sonnet-4.6 timeout: 300 workers: 0Configuration Sections
Section titled “Configuration Sections”Directory paths relative to the project root.
| Field | Type | Default | Description |
|---|---|---|---|
skills |
string | skills/ |
Directory containing skill definitions |
evals |
string | evals/ |
Directory containing evaluation specs |
results |
string | results/ |
Directory for evaluation results |
Workspace detection also recognizes APM-managed skills compiled under
<paths.skills>/<name>/.apm/skills/<name>/SKILL.md. Keep eval suites in the
standard evals/<name>/ directory or next to the source skill directory (for
example, <paths.skills>/<name>/eval.yaml). If a top-level
<paths.skills>/<name>/SKILL.md exists alongside the APM output, the top-level
file takes precedence.
Filename and glob conventions for generated and discovered eval suites. Defaults keep the standard eval.yaml and tasks/*.yaml layout, but projects can opt into more Waza-specific names for editor tooling.
| Field | Type | Default | Description |
|---|---|---|---|
evalFile |
string | eval.yaml |
Eval filename generated by waza new and preferred by workspace discovery |
taskGlob |
string | tasks/*.yaml |
Glob written into generated eval files |
taskFileSuffix |
string | .yaml |
Suffix appended to generated task file basenames |
files: evalFile: waza-eval.yaml taskGlob: tasks/*.waza-task.yaml taskFileSuffix: .waza-task.yamldefaults
Section titled “defaults”Default execution parameters applied to all commands unless overridden by CLI flags.
| Field | Type | Default | Description |
|---|---|---|---|
engine |
string | copilot-sdk |
Execution engine |
model |
string | claude-sonnet-4.6 |
Default model for execution |
judgeModel |
string | Model for LLM-as-judge graders | |
timeout |
int | 300 |
Task timeout in seconds |
parallel |
bool | false |
Enable parallel execution |
workers |
int | 0 |
Number of parallel workers; 0 auto-sizes |
verbose |
bool | false |
Enable verbose output |
sessionLog |
bool | false |
Enable session event logging |
Result caching configuration.
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool | false |
Enable result caching |
dir |
string | .waza-cache |
Cache directory |
server
Section titled “server”Dashboard server configuration for waza serve.
| Field | Type | Default | Description |
|---|---|---|---|
port |
int | 3000 |
Dashboard server port |
resultsDir |
string | results/ |
Directory served by the dashboard |
Settings for the waza dev iterative improvement command.
| Field | Type | Default | Description |
|---|---|---|---|
model |
string | claude-sonnet-4-20250514 |
Model for dev mode |
target |
string | medium-high |
Target adherence level |
maxIterations |
int | 5 |
Maximum improvement iterations |
tokens
Section titled “tokens”Token budget configuration for waza check and waza tokens commands.
| Field | Type | Default | Description |
|---|---|---|---|
warningThreshold |
int | 500 |
Token count warning threshold |
fallbackLimit |
int | 1000 |
Default limit for unmatched files |
tokens.limits
Section titled “tokens.limits”Per-file token limits with glob pattern matching.
| Field | Type | Description |
|---|---|---|
defaults |
map | Glob patterns → token limits (e.g., "*.md": 2000) |
overrides |
map | Exact file paths → token limits (higher precedence) |
tokens: warningThreshold: 2500 fallbackLimit: 2000 limits: defaults: "SKILL.md": 500 "references/**/*.md": 1000 "*.md": 2000 overrides: "README.md": 3000graders
Section titled “graders”Grader execution settings.
| Field | Type | Default | Description |
|---|---|---|---|
programTimeout |
int | 30 |
Timeout for external grader programs (seconds) |
storage
Section titled “storage”Remote result storage for team collaboration. See Azure Storage Guide.
| Field | Type | Default | Description |
|---|---|---|---|
provider |
string | Storage provider (azure-blob) |
|
accountName |
string | Azure Storage account name | |
containerName |
string | waza-results |
Blob container name |
enabled |
bool | false |
Enable remote uploads |
storage: provider: azure-blob accountName: myteamwaza containerName: waza-results enabled: trueComplete Example
Section titled “Complete Example”# yaml-language-server: $schema=https://raw.githubusercontent.com/microsoft/waza/main/schemas/config.schema.json
paths: skills: skills/ evals: evals/ results: results/
files: evalFile: eval.yaml taskGlob: tasks/*.yaml taskFileSuffix: .yaml
defaults: engine: copilot-sdk model: claude-sonnet-4.6 timeout: 300 parallel: false workers: 0
cache: enabled: false dir: .waza-cache
server: port: 3000 resultsDir: results/
dev: model: claude-sonnet-4-20250514 target: medium-high maxIterations: 5
tokens: warningThreshold: 500 fallbackLimit: 1000 limits: defaults: "*.md": 800 overrides: "special.md": 5000
graders: programTimeout: 30
storage: provider: azure-blob accountName: myteamwaza containerName: waza-results enabled: trueNext Steps
Section titled “Next Steps”- CLI Commands — Full command reference
- Token Limits Guide — Token budget details
- Azure Storage — Cloud storage setup