Always on for every agent that loads HeyEddi skills (Cursor, Claude, Codex, Cloud Run, or any other host). Edit code and Terraform in the repo. Check the plan. Do not change live systems.
This is the same kind of gate as verify_setup --check. The script exits 1 on a live mutation. Do not run that command.
Hard gate
Before any Terraform, OpenTofu, Pulumi, gcloud, GAM, Firebase, kubectl, Helm, aws, gsutil, bq, or Google API write, run:
python .agents/skills/heyeddi-local-first/scripts/classify_command.py --check --command "<the exact command>"
From this hub, the script path is skills/heyeddi-local-first/scripts/classify_command.py.
| Exit | Meaning |
|---|---|
0 and "action": "allow" |
Run it. Reads and local config only. |
0 and "action": "plan" |
Run it. Then warn the user with what the plan would create, change, or destroy. Stop. |
1 and "blocked": true |
Do not run it. Edit the files instead. |
A plan command is terraform plan, tofu plan, pulumi preview, or ansible-playbook --check.
Process
- Change the Terraform, config, or app code in the working tree.
- Run the checker on the plan command. Exit 0 with
action: planmeans run the plan. - Warn the user. Quote the resource addresses the plan would add, change, or destroy.
- Commit and review that diff. Live apply stays in the project's deploy pipeline (Cloud Build
terraform-releasefor HeyEddi CI) or in a terminal the human runs.
What exits 1
terraform/tofuapply,destroy,import,refresh,state rm,workspace deletegcloudwrites (delete,deploy,create,submit, IAM changes).list,describe,get,config, andauthstay allowed.- GAM writes, including calendar account changes.
gam infoandgam printstay allowed. firebase deploy, kubectl writes,helm upgrade, aws writes,gsutil rm,bqqueries that are not--dry_runcurl -X POST, PUT, PATCH, or DELETE to a Google API- The same commands inside
bash -c,python -c,$(...), or a local.sh/.pyscript
firebase emulators:start is local and stays allowed.
Tools
| Script | Purpose |
|---|---|
classify_command.py --check |
Exit 1 on a live mutation. Plan prints a warning and exits 0. |
Related
@heyeddialways-on list@engineering-excellencefor the code change gate- HeyEddi CI
cloudbuild.yamlstepterraform-releaseis the reviewed apply path