0.134.64
Fixed
- Sandbox WARN для
sandbox="none": при явном отключении sandbox через БД (permissions.exec.sandbox = "none") runner нормализует значение вsecurity.SandboxNone(пустая строка). Раньше строка"none"напрямую кастилась вSandboxBackendи попадала в default-веткуWrapCommand, что приводило к спамуWARN: security: unknown sandbox backend, command runs unsandboxed, backend:"none"в логах. Команда при этом выполнялась unsandboxed, но лог вводил в заблуждение. Теперь WARN не пишется, поведение в system info / tool description не меняется (Sandbox=none). - Ложное срабатывание ExecGuard на
rm -rfв пользовательских директориях: жадная регулярка(?i)\brm\s+-[rf]{1,2}\b.*\s*/ловила ЛЮБОЕ появлениеrm -r[f], после которого где угодно в строке через&&/pipe шёл слэш. Например, легитимная командаrm -rf ~/.gitea-mcp && /Users/.../gitea-mcpблокировалась как «dangerous operation». Заменено на точную регулярку(?i)\brm\s+-(?:rf|fr|r|f)\s+/, которая блокирует ТОЛЬКО root-anchored пути (rm -rf /,rm -rf /*,rm -rf /etc/...,rm -rf /home/...,rm -r /,rm -f /,rm -fr /), аrm -rf ~/.cache && /usr/bin/fooи аналогичные легитимные команды проходят. - Текст ошибки ExecGuard уточнён: вместо абстрактного
Error: Command blocked by safety filter (dangerous operation)теперь возвращается понятное для LLM сообщение, явно отличающее ExecGuard от sandbox. Раньше LLM-агенты атрибутировали блокировку к sandbox, что приводило к неверным выводам в финальных отчётах (например, «smoke-test заблокирован sandbox-фильтром» в задаче #144).
Tests
- Добавлены
TestExecGuard_RmRf_BlocksRootAnchoredPathsиTestExecGuard_RmRf_AllowsChainedUserDir— точная репродукция бага из agent 1 (2026-06-07), а также расширенное покрытие для root-anchored и пользовательских путей. - Добавлен
TestExecGuard_RmRf_SSHSmokeTestRegression— точная команда из продакшн-инцидента с включённым SSH, проверяющая, что после фикса полный пайплайн (SSH → rm -rf в~/.gitea-mcp→ запуск бинарника) проходит.