Агент повесил Bash одной кавычкой: как FSM на PreToolUse спасает CLI-рантаймы
Когда агент генерирует команду для bash, ошибка на один символ — например, незакрытая кавычка — уводит шелл в бесконечное ожидание, а процесс агента зависает намертво. Регулярные выражения эту проблему не ловят: они проверяют шаблон, а не синтаксис языка.
Решение — детерминированный конечный автомат (FSM), который встраивается в хук PreToolUse. Он анализирует команду до её выполнения: проверяет баланс кавычек, скобок и ключевых конструкций шелла. Если синтаксис сломан — агент не запускает команду, а возвращает ошибку или запрашивает исправление.
Такой подход снимает проблему на уровне инфраструктуры, а не в коде самого агента. Это особенно критично для автономных CLI-рантаймов, где зависание дорогого вызова модели может сорвать весь пайплайн.