Sobre o Read não pegar script que abre o arquivo sozinho: o Claude Code tem um sandbox pro Bash (/sandbox na sessão, ou sandbox.enabled no settings.json) que fecha esse buraco no nível do sistema. Ele vale pro comando e pros processos que o comando abre, então um python lendo o .env também bate na parede se o caminho estiver no filesystem.denyRead. Só que por padrão ele deixa ler quase tudo, inclusive o ~/.ssh, então tem que listar o que fica de fora.
O Bash(git push *) também tem furo. A própria doc avisa que deny de Bash não pega o programa chamado pelo caminho completo nem dentro de sh -c. Pra push eu confiaria mais em não deixar credencial com permissão de escrita dentro do container.