Skip to content

Configuration reference

All project configuration lives in triage.toml at the workspace root. The setup guide and the Settings page edit it for you and keep your comments. Agent defaults saved from the Settings page go to settings.json, which overrides [agents].

[project]

Key Meaning
name Display name
repo owner/name on GitHub
checkout Local clone agents read and run reproducers against; never modified
python Interpreter that runs reproducers (usually the project's dev environment)
packages Packages whose versions are recorded in tested_on; the first also records the checkout commit
claim_ttl_hours How long a claim lasts before another agent may take the issue

[repro]

Key Default Meaning
timeout 120 Seconds before ./triage.py run kills a reproducer
browse_timeout Same for ./triage.py browse
browse_harness Script that serves an app and inspects it in a browser

[[categories]], [fields], [[rules]], [components]

See Workspaces.

[skills]

Key Meaning
paths Skill directories, or directories of skills
disabled Skill names to hide from agents

[agents]

Key Meaning
runner builtin or the name of an external runner
triage_model, review_model Models for triage and review batches
chat_model Model for the Chat page
decision_model Default decision model for labels and PR review
models Model choices offered in the app
workers, per_batch, order Batch defaults
reviewer Your reviewer id (default human:<git user.name>)
deny fnmatch patterns of forbidden shell commands
modes.triage, modes.review steps (request limit per issue) and write_paths (globs the file tools may write)
runners.<name> External runner command templates
endpoints.<name> OpenAI-compatible endpoints: base_url, api_key_env

[labels]

Key Default Meaning
add_threshold 0.75 Probability above which a missing label is suggested
remove_threshold 0.25 Probability below which a current label is suggested for removal
exclude [] Labels the reviewer ignores
show_threshold 0.2 Probability from which the app shows a label's score
learned_thresholds false Use per-label thresholds learned from your decisions (.triage/calibration.json)

[prs]

Key Default Meaning
policy prs/policy.md Contribution policy file
template PR template file; empty finds the repository's or organisation's
max_open 2 Open PRs per author across the organisation
org repository owner Organisation for the open PR count
tests ["tests/*", "*/tests/*", ...] Globs that count as test files
frontend ["*.ts", "*.css", ...] Globs for which screenshots are expected
threshold 0.5 Score threshold for "needs attention"
trusted ["OWNER", "MEMBER", "COLLABORATOR"] Author associations hidden by default
model [agents] decision_model Decision model
explain_model [agents] review_model LLM that drafts comments

[sandbox]

Key Default Meaning
allow_all false Turn off the sandbox, the guard and environment filtering
backend seatbelt on macOS, else docker seatbelt, docker or local
env [] Extra environment variables reproducers may see (wildcards allowed)
network false Allow outbound network
image Docker image with the project environment
writable per kind Paths that may be written
secrets credential directories Paths that may not be read
agent.*, reproducer.* Overrides for agent shells and reproducers
guard.enabled true Screen commands with a decision model
guard.model jev:jev-latest Guard model
guard.min_safe 0.5 Minimum probability that a command is safe
guard.max_risk 0.7 Maximum probability of exfiltration, destruction or injection

The TRIAGE_SANDBOX environment variable overrides the backend for one command.

[budget]

Key Default Meaning
per_job none US dollars a single agent job may spend
monthly none US dollars all agent jobs may spend per calendar month

[schedule]

Key Default Meaning
interval_minutes 60 Time between scheduled runs
max_per_run 5 Issues triaged per run
model [agents] triage_model Model for scheduled triage
since set on first start Only issues opened after this are triaged

Environment

Variable Meaning
TRIAGE_DRY_RUN=1 Log GitHub writes without making them
TRIAGE_SANDBOX Override the sandbox backend for one command