Claude Code как AI-агент: что реально не даёт ему сломать прод

Claude Code — агент с доступом к shell, файлам и git, а не чат с подсказками. Он сам открывает терминал, сам гоняет команды, сам правит файлы — тебе остаётся подтвердить или отклонить. Что реально держит его в рамках: settings.json → permissions.ask/permissions.deny — конкретные тулы (Bash, WebFetch) требуют подтверждения или блокируются жёстко, независимо от того что решил сам агент hooks PreToolUse/PostToolUse — валидация до и после любого действия на уровне харнесса, не промпта; PreToolUse может вернуть deny на опасную команду ещё до её запуска bypassPermissions — режим без подтверждений вообще, но с 2026 уважает org-политику disableBypassPermissionsMode: админ запрещает обход даже если сам агент попробует его включить sandbox-блок — network.allowedDomains, excludedCommands — сеть и список команд закрываются ещё до слоя пермишенов Агент безопасен не потому что “хорошо себя ведёт”, а потому что харнесс проверяет каждое действие снаружи промпта. Без этого слоя — не агент, а root-доступ с уверенным тоном. ...

September 13, 2026 · llexa

Makefile с нуля: targets, .PHONY и автоматические переменные

make — не только для C. По сути это раннер задач с зависимостями: target пересобирается, только если изменился хоть один файл, от которого он зависит. Для команд без файла-результата (test, deploy, clean) нужен .PHONY — иначе make однажды решит, что цель уже “собрана”, просто увидев файл с таким же именем в директории. .PHONY: build test deploy clean build: main.o utils.o gcc -o app $^ # $^ — все зависимости main.o: main.c gcc -c $< -o $@ # $< зависимость, $@ цель test: build ./run_tests.sh deploy: test scp app prod:/opt/app/ $@/$</$^ убирают дублирование имён файлов. deploy: test гарантирует: сначала тесты, потом бинарник на прод. ...

July 28, 2026 · llexa

expect: автоматизация того, что просит ввести пароль вручную

Некоторые старые CLI-утилиты не берут пароль из stdin — только приглашением. expect скриптует диалог: ждёт паттерн в выводе и посылает ответ. #!/usr/bin/expect spawn passwd testuser expect "New password:" send "S3cur3Pass!\r" expect "Retype new password:" send "S3cur3Pass!\r" expect eof spawn запускает процесс, expect "паттерн" ждёт его в выводе (regex), send пишет в stdin, expect eof — дожидается завершения (без него скрипт выйдет раньше процесса). autoexpect записывает сессию как script, сразу генерируя .exp-файл — писать с нуля не обязательно. expect — крайняя мера для legacy без non-interactive режима; где есть --batch/-y, лучше они. ...

July 21, 2026 · llexa