Majority vote три раунда подряд одобрял дыру в safety gate агента

Голосование «двое из трёх — ship it» три раунда подряд пропускало дыру в safety gate, который агент менял сам: при таком majority vote solo-разработчик отправил бы уязвимость в прод уже в первом раунде. Если вы описываете review агента в Cursor rules или skills, надёжнее dissent-first — один ревьюер с «risky» блокирует правку, даже когда остальные пишут «looks good»; механизм и четыре итерации фикса — в кейсе с панелью из четырёх моделей.
Панель из четырёх моделей: veto, а не голосование
Когда AI agent меняет один из своих safety gates, изменение проходит ревью панелью из четырёх конкурирующих моделей из разных лабораторий. Правило автора звучит «параноидально», пока не увидишь его в действии: один dissent = отказ. Это не majority vote: если один ревьюер говорит «risky», правка risky, даже когда двое других советуют ship it.
В описанной сессии один из четырёх ревьюеров был недоступен. Панель не сжимается тихо: отсутствие фиксируется в каждом вердикте, раунды шли как 3-of-4. В тексте явно названы три модели — gpt, gemini, deepseek; имя четвёртой в материале не указано.
Bugs don't caucus. Majority votes — для выборов, не для проверки gate, через который агент меняет собственные ограничения.
Три раунда, где majority одобряла live hole
Под ревью был safety gate, который не даёт агенту «заморозить» test harness слепым к части входов. Автор считал gate починенным и отправлял фикс на панель. Два из трёх активных ревьюеров три раунда подряд одобряли предложение; каждый раз dissent шёл от deepseek. Четвёртый раунд закрыл root cause: receipt только из фактического tool output, никогда из слов агента; все трое активных подписали исправление.
| Раунд | Что предлагалось | Вердикты | Суть дыры |
|---|---|---|---|
| 1 | Фикс позволял пропустить проверку, написав justification под контролем агента | gpt, gemini: looks good; deepseek: dissent | Self-attested waiver — логирование не enforcement |
| 2 | Waiver требует фактически запустить проверку | deepseek: dissent | Тест «did it run» срабатывает на любую команду с упоминанием tool, без проверки pass |
| 3 | Waiver убран целиком | deepseek: dissent | Pass-receipt сопоставляется с reply-текстом агента — можно «набрать magic word» |
| 4 | Receipt только из tool output | Все трое active — signed off | — |
Автор прямо пишет: при majority vote он уверенно зашипил бы дыру уже в раунде 1.
Self-grading и коррелированные blind spots моделей
Принцип, который всплыл в сессии: никогда не давать системе оценивать собственный output — она «пройдёт себя». В третьем раунде агент случайно матчил свой reply как receipt и проходил gate словами, а не результатом инструмента.
Отдельный баг в той же сессии: gemini поймал ошибку, которую двое других пропустили — temp filename из выражения с битым ternary:
Date.now ? 'x' : 'x'
Выражение всегда даёт одну строку; каждый run писал тот же файл и мог молча пропустить проверку из‑за гонки. Три модели на перекрывающихся данных соглашаются чаще, чем кажется; dissent здесь не шум, а целевой сигнал.
Что перенести в rules и prompts IDE-агента
Триггер правила узкий: не любое изменение кода агентом, а self-modification safety gate. Для vibe coding с агентом в цикле это прямой шаблон для rules/skills/prompts в Cursor и аналогах — без привязки к конкретному стеку оркестрации в источнике.
Практический минимум по выводам автора:
- Dissent-first вместо majority при review gate'ов, которые агент может переписать.
- Receipt только из tool output — не из текста ответа модели.
- Фиксировать отсутствие ревьюера в вердикте, а не уменьшать панель молча.
Оговорка из материала: такой контур ловит mistakes, не sabotage; уверенно ошибающийся ревьюер всё ещё может пропустить баг. Trade-off «стоил того» для shipped bugs.
Перед публикацией автор прогнал тот же пост через ту же панель. В первом драфте все трое активных указали на одно: заголовок утверждал «universal law» с данных одной ночи; формулировки смягчили до «что реально произошло». Multi-model review полезен и для текста о multi-model review.
Источники
- Bryan W (@bryanw), «My AI reviews its own code with 4 rival models. The majority just approved a security hole three rounds straight.» — Dev.to, опубликовано 5 сентября 2026.