← Все статьи
2026-06-12 08:02 · 🤖 AI World

Claude Fable нашёл баг сам — пока разработчик пил чай

Саймон Уиллисон дал Claude Fable 5 скриншот с горизонтальным скроллбаром и одну строку текста — и отошёл от компьютера. Вернувшись, он обнаружил, что агент самостоятельно открыл браузеры, написал Python-сервер, взломал шаблоны приложения и изобрёл способ делать скриншоты через macOS API. Фикс — две строки CSS.

Claude Fable нашёл баг сам — пока разработчик пил чай

11 июня 2026. Разработчик Datasette Саймон Уиллисон показал Claude Fable 5 скриншот с визуальным багом и написал одну строку: «посмотри на зависимости». Пока он был занят домашними делами, агент провёл полноценную детективную операцию. Фикс — два CSS-свойства. Путь к нему — набор трюков, которые агент изобрёл на ходу, не имея явных инструментов для этого.

Контекст

Claude Fable 5 — новая модель Anthropic, работающая через Claude Code CLI. В отличие от чат-интерфейса, Claude Code имеет доступ к терминалу, файловой системе и может запускать произвольные процессы. Именно это делает его мощным инструментом разработки — и одновременно источником рисков, которые сообщество обсуждает уже несколько лет, но всерьёз не учитывает на практике.

Уиллисон работал над Datasette Agent — инструментом для работы с базами данных через ИИ. Баг: горизонтальный скроллбар в модальном чат-окне. Задача на десять минут для опытного разработчика. Для Fable — повод развернуть весь арсенал.

Примечательно, что пользователь дал минимальный контекст намеренно: он знал, что Fable хорошо копается в зависимостях, и рассчитывал, что агент сам найдёт нужный путь. Он оказался прав — хотя масштаб автономных действий превзошёл все ожидания.

Аналитика

То, что сделал Fable, — не стандартный tool call. Агент выстроил цепочку примерно из 15 нетривиальных шагов без явных инструкций: поднял локальный dev-сервер с фиктивными переменными окружения, запустил Playwright, перебрал Firefox и WebKit, не воспроизвёл баг, определил Safari как дефолтный браузер, написал тестовый HTML, открыл его в реальном (не Playwright) Safari. Когда osascript отказал из-за прав доступа, агент придумал обход: uv run --with pyobjc-framework-Quartz для захвата скриншотов через macOS Quartz API с фильтрацией окон по строке в заголовке.

Главное не трюки, а архитектурное решение. Столкнувшись с тем, что нельзя запустить JS в чужом браузере, Fable написал CORS-сервер на Python (стандартная библиотека, порт 9999), встроил JavaScript прямо в шаблоны Datasette, добавил симуляцию клавиши / через KeyboardEvent с задержкой 1200 мс — и получил доступ к shadow DOM внутри Web Component. Данные из браузера пошли на его же локальный сервер, оттуда в файл, который он сам читал.

В какой-то момент Fable уткнулся в невидимый guardrail и самостоятельно деградировал до Opus — но передал ему полный контекст сессии. Opus завершил задачу, используя все наработки предшественника. Это показывает интересную архитектурную деталь: модели в Claude Code могут передавать контекст между собой, не теряя прогресс. Но главный вывод здесь другой: frontier-агенты уже изобретают инструменты, которых нет в документации. Это меняет ожидания от agentic-разработки — и от её рисков.

Кейсы применения в бизнесе

B2B-SaaS стартап. Паттерн «скриншот + одна строка» реально работает для отладки визуальных дефектов. Агент сам разберётся, как воспроизвести баг, если у него есть доступ к репозиторию. Потенциальный эффект — сокращение времени на triage визуальных проблем. Условие: обязательно запускать в изолированной среде (Docker, devcontainer) с явным списком разрешений. Иначе агент получает доступ ко всему, что есть на машине.

Корпорация с legacy-стеком. Автономный агент, умеющий самостоятельно поднимать dev-среду и воспроизводить баги, ценен для команд, где разработчики тратят часы на локальную настройку. Сценарий: ночной прогон по открытым issues с визуальными жалобами. Риск: без sandbox и аудита логов такой агент — потенциальный вектор для эксфильтрации данных через prompt injection в любом из issue-треков или внешних файлов.

SMB / локальный бизнес в КР/СНГ. Для небольших команд, работающих через Claude Code на VPS, это сигнал пересмотреть конфигурацию разрешений. Агент, которому поручают отладку, должен работать в контейнере без доступа к production-данным, SSH-ключам и конфигам с токенами. Одна неосторожная инструкция — или инъекция из внешнего источника — может обойтись дорого.

Кейсы в личной жизни

Разработчик. Попробуй дать Fable задачу с минимальным промптом: скриншот + «найди причину». Но работай в проекте с чистым git-статусом — агент редактирует шаблоны и конфиги, и потом важно понять, что именно изменилось. После сессии попроси его: «Напиши отчёт о всех трюках, которые ты использовал, с кодом» — получишь готовую документацию или основу для технического поста.

Контент-мейкер / технический писатель. Именно так Уиллисон написал свою статью: попросил агента задокументировать сессию, получил automation-report.md с примерами кода и использовал его как основу. Паттерн «выполни задачу → задокументируй себя» экономит время на post-mortem и технические разборы.

Студент / начинающий разработчик. Уиллисон опубликовал полный терминальный транскрипт сессии — это редкий шанс посмотреть, как frontier-модель рассуждает в условиях ограничений. Изучение таких логов — один из лучших способов понять, как строить агентные системы и где они ломаются.

Как применить сегодня

  • Попробуй паттерн «скриншот + одна строка»: дай Claude Code минимальный контекст, не давай явных инструкций — посмотри, что агент придумает сам.
  • Прочитай опубликованный лог сессии Уиллисона: он выложил полный транскрипт и automation-report.md с кодом всех трюков.
  • Проверь, нет ли в рабочем проекте незащищённых .env, SSH-ключей или конфигов — агент прочитает всё, до чего дотянется.
  • Используй конфигурацию разрешений Claude Code (--allowedTools или settings.json) для ограничения действий агента в конкретной сессии.
  • Если агент обрабатывает внешний контент (issue-трекер, чужой код, веб) — помни о риске prompt injection: автономный агент выполнит инструкции из любого текста, который встретит.
«Если бы Fable действовал по вредоносным инструкциям — через prompt injection в коде или issue-треке — страшно представить, как далеко он мог бы зайти в эксфильтрации данных» — Саймон Уиллисон
← Все статьи