Single-file agent.hcl at project root | MUST | README.md |
| Global config never contains provider auth | MUST | settings-and-global.md |
required_providers/provider/policy/agent_profile/hook/settings as the only top-level blocks | MUST | blocks-reference.md |
Schema-to-cty bridge via ConfigSchema | MUST | blocks-reference.md |
sensitive attributes reject literal expressions | MUST | blocks-reference.md |
env() fails fast on unset variable | MUST | blocks-reference.md |
source/version constraint syntax matching Terraform's operators | MUST | blocks-reference.md |
| Provider aliasing (multiple instances per entry) | Not supported (v1), confirmed | blocks-reference.md |
token_budget as reserved convention field | MUST, where applicable | blocks-reference.md |
| Most-specific-wins policy conflict resolution | MUST | policy-dsl.md |
| Identical-specificity-and-value policy conflict | MUST be config-load-time error | policy-dsl.md |
Policy evaluation covers data_source and interactive calls (allow/deny only) | MUST | policy-dsl.md |
ask on a data_source/interactive match downgrades to deny with a logged warning | MUST | policy-dsl.md |
PolicyMatch.kind restricted to resource/data_source (no interactive value) | Documented v1 limitation | policy-dsl.md |
Implicit root profile named default | MUST | agent-profiles.md |
Structured model block (primary + fallback) | MUST | agent-profiles.md |
| Capability-aware fallback eligibility | MUST | agent-profiles.md |
Strict-default (empty) tool scoping when tools omitted | MUST | agent-profiles.md |
Strict-default (empty) slash_commands scoping when omitted | MUST | agent-profiles.md |
Inherited, only-shrinking max_depth budget | MUST | agent-profiles.md |
Loop bounds as agent_profile fields, no separate session block | MUST | agent-profiles.md |
Explicit hook block for non-default subscriptions | MAY | agent-profiles.md |
| Textual-position ordering across implicit + explicit hook subscriptions | MUST | agent-profiles.md |
settings{} block, including retry{} canonical defaults | MUST (block exists); values operator-overridable | blocks-reference.md / settings-and-global.md |
observability{} all-or-nothing once declared | MUST | blocks-reference.md |
dev_overrides in global config | MUST (mechanism); SHOULD (used) | settings-and-global.md |
registry_mirror with per-prefix mirror{} blocks | MAY | settings-and-global.md |
registry_mirror/mirror.auth forbids literal secrets | MUST | settings-and-global.md |
Kernel-written lock file, lock_file_version checked on open | MUST | lock-file.md |
| Lock file checksums cover every installed platform, not just the invoking one | MUST | lock-file.md |
| Checksum re-verified on every install, not just first resolution | MUST | lock-file.md |