1. guarda.py (deny)
Nega o que não tem volta: push forçado, reset --hard, git clean -f, checkout -- ., git restore (da árvore), find -delete, rm recursivo na raiz ou no HOME (com aspas ou dentro de bash -c), pkill e killall, dd e mkfs.
E nega escrever em goal.md, tests/, .claude/ e na pasta da própria guarda, por Edit/Write e também pelo Bash: > e >>, tee, sed -i, cp, mv, rm e truncate (GUARDA_PROTEGIDOS muda a lista).
O que ela não pega: a guarda lê o texto do comando, não é sandbox. Um programa que grava sozinho (python3 -c "open('goal.md','w')", node -e, um script seu), caminho montado em variável ou eval passam. Por isso ela vem junto com o deny Edit(...) da aula 4, que cobre as ferramentas de arquivo, e com o sandbox da aula 6, que limita a escrita do próprio Bash.