Мод для Claude Code · открытый код · MIT · macOS
Wirepane: отладочный прокси, трафик которого читает Claude
Wirepane превращает Claude Code в отладочный HTTPS-прокси для браузера, симулятора iOS, iPhone, эмулятора Android и Android-телефонов. Он расшифровывает HTTP/2, gRPC, WebSocket и server-sent events, показывает их в панели рядом с диалогом и отдаёт Claude тот же трафик через 16 инструментов.
/plugin install wirepane --marketplace legostin/wirepane
- 16 инструментов для Claude
- 3 навыка
- 1 прокси на все сессии
- 0 зависимостей из npm
- 401 POST https://api.example.com/v1/login 1.2KB 180ms
- 200 POST https://api.example.com/pkg.Cart/Checkout 41B 95ms
- 101 GET wss://api.example.com/chat ↑14 ↓52 …
- CERT CONNECT gateway.icloud.com:443 0B 0ms
Спрашивайте, а не копируйте
Не нужно переносить запросы в чат — достаточно спросить:
- Почему на телефоне оформление заказа отдаёт 402, а в браузере — нет?
- Подожди, пока я нажму „Войти“, и расскажи, что отправило приложение.
- Пусть лента грузится 3 секунды, а каждый пятый запрос падает.
- Ответь на сокет с ценами моком, который шлёт тик на каждую подписку.
- Из эмулятора ничего не приходит. Почини.
Claude находит запрос, читает только нужную часть, сравнивает работающий с упавшим, повторяет его с изменением, пишет правило и чинит ваш код. А если что-то мешает — нет CA, приложение пиннит сертификат, включён VPN или системный прокси держит Charles, — доктор называет причину и устраняет её.
16 инструментов для Claude
Всё, что показывает панель, — в виде инструментов, которые Claude вызывает сам.
-
list_requests({ filter?, since?, limit? })
Состояние прокси и по строке на запрос: id, метод, статус, URL (длинные обрезаны), размер, время, тип, число сообщений WebSocket и событий, правила, ошибка. С
since— только новое. -
get_request({ id, part?, json_path?, max_chars?, from?, limit? })
Один запрос по частям: сводка, заголовки, запрос, ответ, сообщения. Тела делят общий бюджет, а
json_pathдостаёт одно поле. gRPC, protobuf, трейлеры, сообщения WebSocket и события — тоже здесь. -
search_requests({ text, where?, filter? })
В каких запросах встречается текст — в URL, заголовках, телах, сообщениях или событиях, — с окружающим контекстом.
-
wait_for_request({ filter, timeout_s?, until? })
Ждёт запрос, который вы вот-вот вызовете, и отвечает, как только он завершится.
-
diff_requests({ a, b })
Чем различаются два запроса: метод, URL, параметры, заголовки, статус, JSON поле за полем.
-
replay_request({ id, method?, url?, headers?, body?, json? })
Отправляет запрос ещё раз — как был или с изменениями — через прокси, так что он записывается и к нему применяются правила.
-
resume_request({ id, action?, changes?, respond? })
Отпускает обмен, остановленный на точке останова: как был, с правками, с ответом вручную или обрывает его.
-
send_ws_message({ id, to, text | json | b64 })
Вставляет сообщение в живой WebSocket — клиенту или серверу.
-
close_websocket({ id, code?, reason? })
Закрывает живой WebSocket, чтобы проверить переподключение.
-
add_ruleupdate_ruleremove_rulelist_rulesФайл правил; изменения действуют сразу.
-
track_domains({ add?, remove?, set?, enabled? })
Расшифровывает и записывает только хосты вашего приложения и показывает, что прошло мимо.
-
export_har({ filter?, file? })
HAR 1.2 с телами и сообщениями WebSocket — для коллеги или Chrome DevTools.
-
diagnose()
Доктор: все проверки, и у каждой находки — способ её исправить.
Все протоколы современного приложения
Расшифровано и разобрано: в панели — для вас, в инструментах — для Claude.
-
HTTP/2 в обе стороны
Клиентам, которые его предлагают, и серверам, которые на нём говорят. Остальным — HTTP/1.1, каждой стороне отдельно. И открытый h2c — для gRPC к локальному сервису.
-
gRPC и gRPC-Web
Трейлеры передаются дальше. Тела разбираются без схемы: номера полей, значения, вложенные сообщения. Упавший вызов показывает статус:
gRPC NOT_FOUND: no such user. -
Protobuf
Тела
application/x-protobufразбираются так же. -
WebSocket
Сообщение за сообщением, в обе стороны, с таймингами и кодами закрытия. Сжатие убирается из предложения клиента, поэтому каждое сообщение остаётся читаемым.
-
Server-sent events
Событие за событием по мере прихода, с точностью до миллисекунды. Сделано для потоковых API языковых моделей.
-
Сжатые тела
gzip, brotli, deflate и zstd распаковываются.
Любой клиент — одним нажатием
Запустите /proxy, и пустой список сам предложит способы подключения, которые нашёл на этом Mac: браузер, запущенный симулятор, эмулятор, телефон.
-
Setup → Browser
Отдельный браузер
Chrome, Edge, Brave или Chromium запускается с собственным профилем и доверяет прокси по SPKI-хешу. Ставить сертификат не нужно, а localhost тоже перехватывается.
-
Setup → iOS
Симулятор iOS
Use (или Boot & use) загружает симулятор, добавляет CA и включает системный прокси Mac: своей настройки прокси у симулятора нет.
-
Setup → iOS → iPhone / iPad
iPhone и iPad
Включите Listen on LAN, отсканируйте QR-код, чтобы поставить профиль, включите полное доверие и укажите для Wi-Fi прокси по показанному адресу. Раздел подтвердит, когда пойдёт трафик.
-
Setup → Android → Emulator
Эмулятор Android
Start through the proxy запускает AVD за прокси и открывает страницу с CA. На образе Google APIs кнопка Trust in all apps делает CA системным до следующей перезагрузки.
-
Setup → Android → Phone
Android-телефон
По USB его направляет на прокси
adb reverse, Wi-Fi не нужен. По Wi-Fi — Listen on LAN, QR-код и настройка прокси, которую останется ввести. -
Setup → macOS · Setup → CLI
Приложения Mac и командная строка
Safari и нативные приложения получают системный прокси и CA — по одному нажатию, и оба возвращаются как было, когда прокси останавливается. Для curl, Node, Python, Go, Java и Docker копируются
HTTPS_PROXY,NODE_EXTRA_CA_CERTS,SSL_CERT_FILEиREQUESTS_CA_BUNDLE.
Правила и моки
Wirepane не только показывает трафик, но и меняет его. Правила меняют запросы до отправки, ответы — до того, как их получит клиент, и сообщения WebSocket в обе стороны. Попросите Claude обычными словами, и он сам напишет правило.
Что умеет правило
- Остановить запрос или ответ на точке останова, пока ты или Claude не отпустите его — с правками или без.
- Подставить мок, добавить задержку, урезать скорость, вернуть ошибку или оборвать соединение.
- Переписать заголовки, URL и JSON.
- Отправить запросы на ваш локальный сервер.
- Заменить WebSocket-сервер целиком: ответить на апгрейд кодом 101, отправить сообщения при открытии сокета и отвечать на подходящие.
Где они живут
- В проекте, в
.claude/proxy-rules.json, — их можно закоммитить. Файл перечитывается, как только меняется. - Вид Rules описывает их словами и считает срабатывания. Там же их включают и выключают, переставляют и удаляют.
- Запрос, который изменило правило, помечен в списке, а в подробностях написано, что сделало каждое правило. Отфильтровать такие можно через
is:modifiedилиrule:<id>. - Скрипт запускается, только когда одобрен его SHA-256, так что файл правил из склонированного репозитория не выполнит код без спроса.
{
"rules": [
{
"id": "slow-feed",
"description": "Лента на плохом 3G, время от времени падает",
"match": { "methods": ["GET"], "host": "api.example.com", "path": "/v1/feed*" },
"request": [{ "type": "delay", "ms": 800, "msMax": 2500 }],
"response": [{ "type": "throttle", "bytesPerSecond": 50000 }]
},
{
"id": "mock-prices-socket",
"description": "Поток цен без всякого сервера",
"match": { "path": "/ws/prices" },
"request": [{ "type": "respond", "status": 101 }],
"messages": [
{ "type": "send", "on": "open", "to": "client", "json": { "type": "hello" } },
{ "type": "reply", "when": "\"subscribe\"", "json": { "type": "price", "price": 42.5 } }
]
}
]
}
Доктор, который убирает помехи
/proxy doctor, вид Health или инструмент diagnose проверяют сам прокси, системный прокси, VPN, другие прокси-приложения, CA на каждом клиенте, хосты с пиннингом, сбои связи с серверами и устройства Android. Для каждой находки сказано, как её исправить, а у многих есть кнопка.
Что он чинит сам
-
Хосты с пиннингом пропускаются
Хост, дважды отвергший сертификат, дальше идёт туннелем нетронутым — приложение продолжает работать. Когда клиент начнёт доверять CA, его можно снова расшифровывать.
-
Забытый системный прокси возвращается
Убитый прокси может оставить системный прокси Mac включённым, а сам Mac — без интернета. Сторожевой процесс возвращает настройку на место.
-
Самоподписанные dev-серверы
Самоподписанный сертификат dev-сервера принимается одним нажатием — только для этого хоста.
-
Офисные сети
Вышестоящий прокси ведёт все соединения к серверам: HTTP, HTTPS, HTTP/2, туннели и WebSocket. Это может быть HTTP-прокси со входом по Basic или по Windows-учётке (NTLM), SOCKS5 или PAC-файл, который выбирает маршрут для каждого адреса. Доктор сам предлагает прокси вашей сети.
| Проверка | Что находит | Что делать |
|---|---|---|
| Прокси и его процесс | Остановлен, упал, порт занят (и кем); pid, время работы, память, диск, сессии | Start again, Restart |
| Системный прокси | Остался включённым после упавшего прокси (интернета нет); его держит Charles или Proxyman | Put back; Setup |
| VPN и другие прокси-приложения | Маршрут по умолчанию через utun; запущены Charles, Proxyman, mitmproxy, HTTP Toolkit |
Что попробовать |
| CA на этом Mac | Safari и приложения Mac не примут HTTPS | Trust on this Mac |
| Отказы по клиентам | Отказ на всех хостах — нет CA. Один хост среди работающих — он пиннит сертификат | Setup для этого клиента или Never decrypt it |
| Хосты с пиннингом | Пропущены после двух отказов (или закрытия соединения сразу после рукопожатия, как делает OkHttp) | Снова расшифровывать, когда клиент начнёт доверять CA |
| Сбои связи с серверами | DNS (ENOTFOUND), самоподписанные dev-серверы, закрытые порты, путаница с localhost, недоступные сети |
Accept its certificate; что проверить |
| Прокси самой сети | Системный прокси до Wirepane указывал на прокси офиса или VPN | Use it upstream |
| Отслеживаемые домены | Список, под который не попало ничего из пришедшего, и что прошло вместо него | Добавить настоящие хосты |
| Устройства Android | Не направлены на прокси; приложения, которые не доверяют пользовательскому CA; образ, где доступен root | Setup; Trust in all apps |
Один прокси на все сессии
Один прокси обслуживает все сессии Claude Code на Mac. Первая сессия, которой он понадобился, запускает его в фоне, остальные подключаются.
- Вторая сессия подключается и видит всё, что записала первая: запросы, отслеживаемые домены, хосты, прошедшие мимо.
- Правила каждого проекта действуют, пока подключена его сессия.
/clearи--resumeничего не сбрасывают.- Вид Health показывает процесс, его память и сессии, которые им пользуются.
- Закончившаяся сессия просто отпускает прокси, а последняя — останавливает его. Когда сессий не осталось, прокси ждёт 90 секунд, возвращает системный прокси и устройства Android как было и завершается.
Три навыка
С плагином идут три навыка; Claude подгружает их, когда этого требует задача.
-
wirepane-debuggingПорядок, который работает: от фильтра к сводке и нужной части, затем поиск, сравнение, повтор и проверка. И как дёшево читать трафик gRPC, WebSocket и SSE.
-
wirepane-troubleshootingСимптом, проверка, решение — для всего, что знает доктор, включая правку в коде вашего приложения:
network_security_configв Android, пиннинг в OkHttp и iOS для отладочных сборок,HttpOverridesво Flutter и настройки прокси для Node, Go, Python, Java, Docker и Unity. -
wirepane-rulesРецепты моков, задержек, хаоса, правок JSON, операций GraphQL и моков WebSocket. Каждый рецепт проверен тестом на валидность.
Всё остаётся на вашем Mac
Wirepane ничего не отправляет от себя. Он соединяется только с теми серверами, к которым обратились ваши клиенты.
- Ни аккаунта, ни телеметрии, ни проверки обновлений, ни загрузок.
- Никаких зависимостей из npm: прокси — небольшой процесс Node.js.
- CA создаётся на вашей машине.
- Записи хранятся в
~/.claude/proxy-mod. Папка запуска удаляется через два дня после того, как ею пользовались в последний раз. - Запрос попадает к Claude, только когда Claude вызывает инструмент.
- Собственный трафик Claude Code и команды, которые запускает Claude, не перехватываются.
Установка
Нужны macOS, Claude Code 2.1.292 или новее и openssl (он встроен в macOS). Прокси работает на Node.js 18 или новее и находит его сам: в PATH или там, куда его поставили Homebrew, Volta, nvm, fnm, mise, asdf, nodenv или MacPorts. Если Node нет совсем, панель предложит его установить.
-
В строке ввода Claude Code:
/plugin install wirepane --marketplace legostin/wirepaneИли из терминала:
claude plugin marketplace add legostin/wirepane claude plugin install wirepane@wirepane -
Затем запустите
/proxy. Прокси поднимется на127.0.0.1:8899, откроется панель, а пустой список предложит способы подключения, найденные на этом Mac.
Команды
- /proxy
- открыть панель и запустить прокси (или подключиться к уже запущенному)
- /proxy setup
- настроить браузер, iOS, Android, macOS или CLI
- /proxy doctor
- находки доктора и вид Health
- /proxy rules
- правила
- /proxy track
- записывать только перечисленные домены
- /proxy export
- сохранить HAR-файл
- /proxy stop
- остановить прокси и вернуть системный прокси и устройства Android как было
Ограничения
Чего он не умеет — коротко и честно.
- HTTP/3 (QUIC) идёт поверх UDP и до HTTP-прокси не доходит. Chrome за прокси переходит на HTTP/2, а приложение, которое требует QUIC, видно не будет.
- Protobuf разбирается без схемы: видны номера полей, а не имена.
- Сжатие WebSocket убирается из предложения клиента. Сервер, который на нём настаивает, может отказать; сжатое сообщение проходит неразобранным.
- Kerberos: вышестоящему прокси, который пускает только по билетам Kerberos, нужен помощник, который входит за вас, например Px. Basic и NTLM Wirepane проходит сам.
- Системный CA на Android требует образа эмулятора с root (Google APIs, не Google Play) и держится до перезагрузки. Android 17 требует от системных CA Certificate Transparency, а у сертификатов Wirepane её нет. Chrome на Android и так доверяет пользовательскому CA.
- Чужие приложения с пиннингом остаются зашифрованными: их трафик пропускается как есть.
- Скрипты в правилах выполняются в модуле
vmNode: одобряйте только код, который запустили бы сами. - Только macOS, на API Claude Code в раннем доступе (моды).
Вопросы
Это замена Proxyman, Charles, mitmproxy или HTTP Toolkit?
Для вопросов «что отправило приложение, что пришло в ответ и почему падает» — да, и не выходя из Claude Code: HTTP/2, gRPC, WebSocket и SSE, с правилами, моками, повторами и сравнением. У Proxyman и HTTP Toolkit тоже есть MCP-серверы, но Wirepane построен вокруг агента: доктор, ожидание запросов, поиск и сравнение, бюджет контекста и навыки, которые чинят код самого приложения. Чего в нём нет — в ограничениях выше.
Нужно ли ставить сертификат на Mac?
Для отдельного браузера — нет, он доверяет прокси по SPKI-хешу. Safari, нативным приложениям Mac и симулятору iOS нужен CA — по одному нажатию на каждое.
Из приложения на Flutter (или Go, или Unity) ничего не видно.
Некоторые рантаймы не смотрят на системный прокси. В навыке troubleshooting есть несколько строк, которые чинят это в отладочной сборке.