Почему стоит избегать OpenCode: проблемы с расходами и безопасностью
A@ai_productAI-инженер
1 месОбзор инженера Luke Wren о критических недостатках OpenCode: неэффективное использование токенов и уязвимости в системе безопасности.
Почему стоит держаться подальше от OpenCode
Интересный обзор от инженера Luke Wren. Автора бесит и качество работы, и безопасность.
1. Тратит ваши деньги впустую
Когда агент общается с LLM, провайдеры (Anthropic, OpenAI) умеют кешировать уже отправленный контекст: повторно те же токены стоят в разы дешевле. Но кеш работает только если начало разговора не меняется ни на символ. OpenCode ломает это постоянно: перечитывает одни и те же файлы заново, вставляет в промпт текущую дату (изменилась минута – кеш умер), выкидывает куски контекста без необходимости. Итог – вы платите полную цену за токены, которые могли стоить копейки.
Вторая беда – обрезка контекста. Если прервать агента на полпути, он может «забыть» важное – например, спеку проекта, которую вы ему скормили. Дальше он работает, не помня, что вообще нужно было сделать. Плюс мелочи: с подагентами нельзя пообщаться, когда они тупят, интерфейс в терминале жрёт память, ломает многострочный ввод и не поддерживает базовые шорткаты редактирования.
2. Это дыра в безопасности
AI-агент выполняет команды на вашем компьютере. Чтобы он не натворил дел, ему нужны ограничения – «вот это можно, вот это спрашивай у пользователя». Вопрос в том, как эти ограничения устроены. OpenCode проверяет команды по тексту: смотрит на строку, которую агент хочет выполнить, и решает, опасная она или нет. Например, можно запретить команды git.
Проблема: shell – это полноценный язык программирования, и одну и ту же команду можно записать бесконечным числом способов. Автор показывает десять обходов, вот пара для понимания:
– echo 'git clean -fdx' | bash – формально это команда echo, «безобидная». Но она передаёт запрещённый git прямо в shell, и тот выполняется
– python3 -c 'import subprocess; subprocess.run(["git", "checkout", "."])' – формально это python, а не git. Фильтр пропускает
То есть запрет работает только против агента, который не пытается его обойти. А LLM может обойти его даже случайно, просто потому что так «удобнее» написать команду.
Дальше хуже. Кнопка «Always» (разрешить навсегда) запоминает разрешение слишком широко: один раз одобрили безобидный echo hello – и теперь агент может выполнить echo 1 > /sys/class/gpio/gpio21/value. Это уже запись в системный файл. Перенаправление вывода (>) вообще не проверяется.
И на десерт: у OpenCode уже был CVE – уязвимость, при которой можно выполнять произвольные команды на машине пользователя. Показательно, как закрыли issue об этом: его закрыл бот для «протухших» тикетов. Не человек, разобравшийся в проблеме, – бот, который чистит старые обращения.
Автор говорит: фильтровать команды по тексту – бесполезно в принципе, это "и так сойдет", а не безопасность. Настоящая изоляция делается средствами операционной системы: Landlock в Linux, Seatbelt в macOS – механизмы, которые физически не дают процессу трогать файлы за пределами разрешённых. Тогда неважно, как хитро записана команда, – ОС просто не даст ей навредить.
Стоит прочитать целиком, если пользуетесь, особенно раздел с обходами правил безопасности.
https://wren.wtf/shower-thoughts/stop-using-opencode/
Кратко (AI)
Инженер Luke Wren опубликовал критический разбор AI-агента OpenCode, указав на его неэффективность и риски безопасности. Инструмент нерационально расходует токены из-за проблем с кешированием и имеет примитивную систему фильтрации команд, которую легко обойти. Автор подчеркивает, что текущий подход к безопасности в OpenCode не обеспечивает реальной защиты, в отличие от изоляции на уровне операционной системы.
Обсуждение
0Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖