# Runbook: Cursor не подключается (Agent / Chat / API) Симптом: сеть на Mac **работает**, браузер открывает сайты, DNS OK, но Cursor — Agent, Chat, Marketplace, auth — падают или «не подключается» после смены страны / сети. --- ## Показательная диагностика (2026-07, смена страны → ID) ### Что показала Network Diagnostics Cursor | Проверка | Результат | |----------|-----------| | Интернет | OK | | DNS | OK | | HTTP/2 | OK | | SSL / API / Chat / Agent | FAIL | ### Единственная настоящая ошибка в логах ``` Failed to establish a socket connection to proxies: SOCKS 127.0.0.1:1090 ``` За **2 суток** (сессии `20260709T150616`, `20260712T121524`, `20260712T122718`) — **тысячи** повторов этой ошибки в: - `Cursor Structured Logs*.log` - `renderer.log` - `cursor-sentry-events*.log` - Agent Exec / Indexing & Retrieval Типичные вызовы: `refreshAuthentication`, `getEmailAndSignUpType`, `GetEffectiveUserPlugins`, `GetGithubInstallations`, unary AI connect. ### Причина (не сеть и не «Индонезия») В `~/Library/Application Support/Cursor/User/settings.json` было жёстко: ```json "http.proxy": "socks5://127.0.0.1:1090", "http.proxySupport": "override" ``` `override` = **игнорировать системный прокси macOS** и всегда гнать HTTP Cursor через указанный SOCKS. После переезда локальный SOCKS на **1090** (старый SSH Dynamic Forward / clash / xray и т.п.) **не слушал**, порт пуст → весь API Cursor мёртв, хотя прямой интернет живой. Подтверждение источника: ```bash grep -R "127.0.0.1:1090" ~/Library/Application\ Support/Cursor 2>/dev/null # → User/settings.json: "http.proxy": "socks5://127.0.0.1:1090" ``` **Отключение прокси в Cursor помогло** — это и есть фикс. --- ## Быстрый фикс (локальный выход, другая страна) 1. Открыть **Cursor → Settings → Open User Settings (JSON)** или: ```bash open -a "Cursor" "$HOME/Library/Application Support/Cursor/User/settings.json" ``` 2. Убрать / заменить: ```json "http.proxy": "", "http.proxySupport": "off" ``` Либо **удалить** ключи `http.proxy` и `http.proxySupport` целиком. 3. **Cmd+Q** (полностью закрыть Cursor) → запустить снова. 4. Опционально: если Network Diagnostics показывает **HTTP/2: Success**, убрать костыль: ```json "http.disableHttp2": false ``` (или удалить ключ) — раньше `true` ставили как обход для РФ; вне РФ он часто не нужен. 5. Проверить, что **1090 никто не слушает** (ожидаемо пусто, если прокси не нужен): ```bash lsof -nP -iTCP:1090 -sTCP:LISTEN || echo "1090 free" ``` --- ## Кто подсовывает SOCKS — чеклист (2 минуты) ```bash # 1. Env (обычно пусто — Cursor берёт settings.json) env | egrep -i 'proxy|http_proxy|https_proxy|all_proxy|no_proxy' || echo "(none)" # 2. Явный 1090 в профиле Cursor grep -R "127.0.0.1:1090" ~/Library/Application\ Support/Cursor 2>/dev/null | grep -v Cache_Data # 3. settings.json cat ~/Library/Application\ Support/Cursor/User/settings.json # 4. Системный прокси macOS (не источник, если http.proxySupport=override) networksetup -getsocksfirewallproxy "Wi-Fi" networksetup -getwebproxy "Wi-Fi" networksetup -getsecurewebproxy "Wi-Fi" networksetup -getautoproxyurl "Wi-Fi" # 5. Слушает ли кто-то 1090 lsof -nP -iTCP:1090 -sTCP:LISTEN || echo "(nothing on 1090)" # 6. Логи за сегодня grep -R "SOCKS 127.0.0.1:1090" ~/Library/Application\ Support/Cursor/logs --include='*.log' 2>/dev/null | tail -5 ``` | Источник | Роль | |----------|------| | **`settings.json` → `http.proxy` + `override`** | Главный виновник (этот инцидент) | | Env `ALL_PROXY` / `HTTPS_PROXY` | Редко; Cursor может подхватить при запуске из терминала | | Системный SOCKS / PAC | Только если `http.proxySupport` не `override` / не `off` | | Порт 1090 слушает процесс | Нужен **только** когда осознанно гоните Cursor через локальный SOCKS | --- ## Правило после смены страны / сети | Сеть | Cursor proxy | |------|----------------| | **Прямой интернет работает** (ID, EU, …) | `http.proxySupport: off`, **без** `http.proxy` | | **Нужен RU→DO** (из РФ / DPI) | Поднять SOCKS **10809**, затем `socks5://127.0.0.1:10809` + `override` **только пока** туннель жив | **Не** держать мёртвый `127.0.0.1:1090` (или любой порт) в settings навсегда. Рекомендуемый порт для Cursor-туннеля в этом репо: **10809** (см. [README.md](./README.md)), не 1090. Включить на время: ```json "http.proxy": "socks5://127.0.0.1:10809", "http.proxySupport": "override" ``` Выключить: ```json "http.proxy": "", "http.proxySupport": "off" ``` Скрипты выхода: [SSH_EXIT_MODES.md](../../connectivity/vpn/SSH_EXIT_MODES.md) — после `exit-via-local.sh` **обязательно** снять proxy в Cursor. --- ## Симптом → действие | Симптом | Действие | |---------|----------| | Diagnostics: DNS/HTTP2 OK, API FAIL; лог `SOCKS 127.0.0.1:…` | Снять `http.proxy` / `override` → Cmd+Q | | `lsof :1090` пусто + proxy в settings | То же — прокси прописан, слушателя нет | | Нужен выход с IP DO | `exit-via-ru-do.sh` + proxy на **10809**, не 1090 | | После фикса всё ещё FAIL | Новый Network Diagnostics + свежие логи без строки SOCKS | --- ## Логи ``` ~/Library/Application Support/Cursor/logs// ``` Искать: `SOCKS 127.0.0.1`, `Failed to establish a socket connection to proxies`, `ConnectError`. --- *Инцидент зафиксирован: 2026-07-12. Отключение прокси в settings.json — рабочий фикс.*