Server-side config & control
Who can define workflows.
There are two places configuration can live, and the split is a security boundary. Repo-side atlantis.yaml is convenient but editable by anyone who can open a PR. Server-side config (a repos.yaml the operator controls) sets the rules that repos cannot override: which workflows exist, whether repos may define their own, what apply requirements are enforced, and which settings a repo’s atlantis.yaml is even allowed to change. Server-side config is how the operator keeps control.
repos:- id: /.*/apply_requirements: [approved, mergeable] # enforced; repos cannot weaken thisallowed_overrides: [workflow] # repos may pick a workflow...allow_custom_workflows: false # ...but NOT define new onesworkflow: default- id: github.com/acme/platform # trusted repo gets more latitudeallow_custom_workflows: true
Least privilege for repos
The safe default is restrictive: enforce apply requirements server-side, disallow custom workflows, and permit only the specific overrides you trust — then loosen selectively for repos owned by teams you trust. This prevents a PR from redefining the guardrails it must pass or injecting a malicious run step. Think of repos.yaml as the policy for the automation itself: it decides what the reviewed, credential-holding server will and will not do on behalf of any given repo.