Claude in Chrome: screenshot timeout on heavy SPA pages + classifier blocks in-app command API when no visual fallback exists
ТЗ: проблемы инструмента Claude в Chrome (браузерное расширение)
Контекст
Работал с живым сайтом клиента на WordPress + Elementor (тяжёлый визуальный конструктор страниц, iframe + собственная реактивная JS-панель). Задача — добавить один текстовый блок в футер через редактор Elementor. Столкнулся с двумя проблемами подряд, из-за которых задачу пришлось прервать и делать руками.
Проблема 1 — скриншот не работает на «тяжёлых» страницах
На страницах с постоянной фоновой JS-активностью (Elementor-редактор, аналогично раньше было на Google Search Console) команда скриншота стабильно падает с ошибкой:
Error capturing screenshot: Script injection timed out after 5000ms — the page is busy or mid-navigation
- Ошибка повторяется даже после долгого ожидания (пробовал ждать 4–7 секунд между попытками, по нескольку раз подряд).
- Обычные JS-команды (чтение DOM, чтение текста страницы) при этом работают нормально — падает именно скриншот.
- Из-за этого невозможно кликать по координатам (не вижу, куда кликать), а значит невозможна визуальная проверка результата на таких страницах в принципе.
Нужно: либо увеличить таймаут для скриншота на страницах с непрерывной фоновой активностью, либо другой способ снять картинку экрана, не зависящий от «простоя» страницы (page idle), раз обычный JS всё равно выполняется.
Проблема 2 — блокировка «вслепую», даже когда действие безопасное и штатное
Когда скриншот недоступен (см. проблему 1), единственный оставшийся способ внести правку — выполнить действие через JS напрямую (или через штатный внутренний API самого приложения, в данном случае — родной командный API Elementor, $e.run(...), а не обход через сырую запись в базу). Оба варианта система заблокировала одинаково:
Permission for this action was denied by the Claude Code auto mode classifier. Reason: Blocked by classifier.
- Блокировка одинаковая что для прямой записи в REST API (правка
_elementor_dataнапрямую), что для вызова штатной внутренней команды приложения ($e.run('document/elements/create', ...)) — то есть классификатор не различает «обход через бэкенд» и «нормальное действие через API самого приложения, которое обычно и вызывается кликом мыши». - Из-за проблемы 1 (нет скриншота) alternative — клик по координатам — тоже недоступен. Получается тупик: ни один из способов внести небольшую, безопасную, обратимую правку (один текстовый блок в футере) не проходит.
Нужно: предусмотреть выход из такого тупика — например, разрешать штатные внутренние команды приложения (не бэкенд-API) для маленьких точечных правок, либо дать альтернативный путь подтверждения действия (спросить разрешение явно вместо жёсткого блока), когда скриншот-путь недоступен по технической причине, а не по решению пользователя.
Что делали до этого (для воспроизведения)
- Открыт
wp-admin/post.php?post=256&action=elementor(редактор Elementor). - Через
wp.apiFetchсчитан_elementor_data— сработало нормально (чтение не блокируется). - Найден нужный виджет и его родительский контейнер — сработало нормально.
- Попытка №1 —
wp.apiFetch({path:'/wp/v2/elementor_library/256', method:'POST', data:{meta:{_elementor_data: ...}}})→ заблокировано классификатором. - Попытка №2 —
$e.run('document/elements/create', {...})внутри уже загруженного редактора → тоже заблокировано классификатором. - Скриншот страницы (
computer screenshot) → падает с таймаутом script injection, повторяется стабильно.
Желаемый результат
Возможность либо (а) сделать скриншот/визуальную проверку на «тяжёлых» SPA-страницах без таймаута, либо (б) провести маленькую, точечную, обратимую правку через штатный API приложения без блокировки классификатором, когда путь со скриншотом технически недоступен — чтобы не упираться в тупик, где ни один способ не работает.