Sobre o 1, tem um caso parecido que pega bastante gente: o hook que nem consegue rodar. Se o script não existe, falta o jq na máquina ou estoura o timeout, por padrão isso também vira erro não bloqueante e a ação passa. Dá pra colocar "onFailure": "block" no hook, aí falha e timeout num PreToolUse bloqueiam igual ao exit 2.
E no 2, a regra Read(./.env) pega um pouco mais do que as ferramentas de arquivo. A doc de permissões diz que ela também vale pra cat, head, tail e redirecionamento no Bash. O que escapa é um grep -r rodado na pasta e script que abre o arquivo por conta própria, como você falou, e pra esses só o sandbox resolve.