2026-03-04 15:38:23 +00:00
|
|
|
# Yoke configuration
|
|
|
|
|
# Lines starting with # are comments. Blank lines are ignored.
|
|
|
|
|
|
|
|
|
|
# ── Backend ────────────────────────────────────────────────────────────
|
|
|
|
|
# Model to use for the agent. If unset, defaults to Claude CLI.
|
|
|
|
|
# Use provider/model format for OpenRouter or other opencode providers.
|
|
|
|
|
# model openrouter/anthropic/claude-sonnet-4
|
|
|
|
|
# model openai/gpt-4o
|
|
|
|
|
# model anthropic/claude-sonnet-4
|
|
|
|
|
|
|
|
|
|
# ── Sandbox ──────────────────────────────────────────────────────────
|
|
|
|
|
# Docker image to run the agent inside. Required unless you pass --no-sandbox.
|
|
|
|
|
# Note: sandbox is not currently supported with the 'model' directive.
|
|
|
|
|
image claude-code-sandbox:latest
|
|
|
|
|
|
|
|
|
|
# ── Output ───────────────────────────────────────────────────────────
|
|
|
|
|
# Max lines of tail output kept per guard in guard-results.md.
|
|
|
|
|
# Keeps the results file from exploding on verbose commands.
|
|
|
|
|
max-tail 200
|
|
|
|
|
|
|
|
|
|
# Uncomment to save raw stream-json output per iteration.
|
|
|
|
|
# Each iteration writes to <log-dir>/iteration-<N>.jsonl.
|
|
|
|
|
# log-dir .loop/logs
|
|
|
|
|
|
|
|
|
|
# ── Scope rules (diff boundary enforcement) ──────────────────────────
|
|
|
|
|
# Controls what files the agent is allowed to change. After each iteration
|
|
|
|
|
# yoke diffs the working tree and checks every changed file against
|
|
|
|
|
# these rules. Most-specific (longest prefix) match wins.
|
|
|
|
|
#
|
|
|
|
|
# Directives:
|
|
|
|
|
# allow <prefix> — any change permitted (add, modify, delete)
|
|
|
|
|
# add-only <prefix> — new files only; existing files cannot be modified
|
|
|
|
|
# no-modify <prefix> — no changes at all (adds or modifications rejected)
|
|
|
|
|
#
|
|
|
|
|
# The prefix "." matches every path (root catch-all).
|
|
|
|
|
#
|
|
|
|
|
# Examples:
|
|
|
|
|
# allow src/ # full access under src/
|
|
|
|
|
# add-only tests/ # can create new test files, not edit existing
|
|
|
|
|
# no-modify .github/ # CI config is off-limits
|
|
|
|
|
# allow . # fallback: everything else is allowed
|
|
|
|
|
|
|
|
|
|
allow .
|
|
|
|
|
|
|
|
|
|
# ── Guards (run in order, fail-fast) ─────────────────────────────────
|
|
|
|
|
# Shell commands executed after each agent iteration. If any guard
|
|
|
|
|
# exits non-zero the iteration is marked failed, remaining guards are
|
|
|
|
|
# skipped, and the results are fed back on the next pass.
|
|
|
|
|
#
|
|
|
|
|
# Common examples:
|
|
|
|
|
# guard cargo check
|
|
|
|
|
# guard cargo test
|
|
|
|
|
# guard npm run lint
|
|
|
|
|
# guard python -m pytest tests/ -x
|
|
|
|
|
# guard make test
|
|
|
|
|
#
|
|
|
|
|
# NOTE: avoid "cargo check" as the sole guard — its type-error output
|
|
|
|
|
# can confuse the agent into chasing compiler noise instead of finishing
|
|
|
|
|
# the task. Prefer a test suite or linter that validates behaviour.
|
|
|
|
|
|
|
|
|
|
# guard cargo check
|
2026-03-05 10:46:50 +00:00
|
|
|
|
|
|
|
|
# ── Periodic agents (cadence-based supplementary agents) ──────────────
|
|
|
|
|
# Invoke an additional agent protocol at a fixed cadence (every N
|
|
|
|
|
# worker iterations). Useful for code cleanup, review passes, etc.
|
|
|
|
|
# The agent name is derived from the filename (cleaner.md → "cleaner").
|
|
|
|
|
#
|
|
|
|
|
# periodic <protocol-path> <every-N-iterations>
|
|
|
|
|
#
|
|
|
|
|
# periodic .loop/cleaner.md 10
|
|
|
|
|
|
|
|
|
|
# Guards that run after a specific periodic agent completes. Results
|
|
|
|
|
# are written to .loop/periodic-<name>-results.md (separate from the
|
|
|
|
|
# worker's guard-results.md so the worker isn't confused).
|
|
|
|
|
#
|
|
|
|
|
# guard-after <periodic-name> <command>
|
|
|
|
|
#
|
|
|
|
|
# guard-after cleaner cargo test
|