Files
local_machine/docs/apps/cursor/RUNBOOK.md
ahauimix 0238aa7c02 Add Object B and self-growth canons with Cursor ledger rules; refresh connectivity and VPN runbooks.
Track day metrics/anamnesis HARD rules under .cursor/rules and personal docs so each screening updates days/{KIN}, dynamics, and big-data ledger.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-26 10:22:56 +08:00

177 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/<timestamp>/
```
Искать: `SOCKS 127.0.0.1`, `Failed to establish a socket connection to proxies`, `ConnectError`.
---
*Инцидент зафиксирован: 2026-07-12. Отключение прокси в settings.json — рабочий фикс.*