Reported issues for ScopeGate
Pod holds 20 of 43 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to ScopeGate.
Most discussed
Снизить p99 latency инструмента threads_publish_thread (11.9 с) — близко к 30 с таймауту MCP
Problem
По данным SigNoz за 24 ч (2026-06-15):
mcp.tool threads_publish_threadp99 = 11 906 мс (~11.9 с)service-fetch threadsp99 = 5 971 мс
Инструмент выполняет несколько последовательных вызовов API Threads (загрузка медиа + публикация треда). При p99 = 11.9 с и hard-limit таймаута MCP в 30 с буфер составляет всего ~18 с — при деградации API Threads или дополнительных медиа-вложениях возможен timeout.
Предыдущий снапшот (Jun 14): threads_publish_thread не входил в топ-10 п
Read the thread · 2026-06-15 · closed · 6 comments
CI failure on master
Automated CI gate detected failing checks: build
- Branch:
master - Commit:
6a01575add6213c6ee0bf36a4a458bd5f153a890 - CI run: https://github.com/alifanov/scopegate/actions/runs/27958573596
build
Loaded Prisma config from prisma.config.ts.
Prisma schema loaded from prisma/schema.prisma.
✔ Generated Prisma Client (7.4.2) to ./src/generated/prisma in 106ms
src/lib/mcp/tools/__tests__/linkedin.test.ts(122,48): error TS2345: Argument of type '{ buffer: Buffer<ArrayBuffer>; mi
[Read the thread](https://github.com/alifanov/scopegate/issues/152) · 2026-06-22 · closed · external user · 4 comments
### Генерировать API-ключи MCP-эндпоинтов криптостойким способом вместо cuid()
## Problem
API-ключ MCP-эндпоинта — это **единственный bearer-токен**, дающий доступ к подключённым сторонним сервисам проекта (Gmail, Stripe, Google Ads, LinkedIn и др.) с настроенными разрешениями. Запрос идёт на `GET/POST/DELETE /api/mcp/[apiKey]`, ключ передаётся прямо в URL.
Ключ генерируется небезопасным способом:
- `prisma/schema.prisma:116` — `apiKey String @unique @default(cuid())`. **cuid v1** не является криптографически стойким: он содержит timestamp, монотонный счётчик и низкоэнтр
[Read the thread](https://github.com/alifanov/scopegate/issues/112) · 2026-06-14 · closed · 4 comments
### CI failure on master
Automated CI gate detected failing checks: **test**
- Branch: `master`
- Commit: `4241da4267f2905972ce8e7783482ca377ceec2d`
- CI run: https://github.com/alifanov/scopegate/actions/runs/30318663234
### `test`
[32m✓[39m src/lib/mcp/tools/tests/container-poll.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 13[2mms[22m[39m [32m✓[39m src/lib/tests/service-connect.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 14[2mms[22m[39m [32m✓[39m src/lib/mcp/tests/mail-saf
Read the thread · 2026-07-28 · closed · external user · 3 comments
Расследовать 34 HTTP 500 на /api/mcp/[apiKey] за 7 дней
Problem
За последние 7 дней зафиксировано 34 HTTP 500 ответа на маршруте `/api/mcp/[apiKey]` (0.14% от 177 551 запросов). Предыдущие снапшоты не содержали этого маршрута в числе топ HTTP-ошибок — возможна новая регрессия.
What to do
- Запросить в SigNoz трейсы с
http.route="/api/mcp/[apiKey]"иhttp.status_code=500за последние 7 дней - Сгруппировать по
mcp.toolиerror.message— выявить топ-3 причины сбоев - Проверить
reportMcpRouteError()в `src/app/api/mcp/[apiKey]
Read the thread · 2026-06-19 · closed · 3 comments
Единый реестр OAuth-провайдеров — знание о провайдере размазано по 6+ местам
Проблема
Знание об одном OAuth-провайдере размазано по 6+ местам, и нет единого источника правды. Чтобы добавить или понять одного провайдера (например, jira), нужно отредактировать/прочитать:
src/lib/<provider>-oauth.ts— scopes, построение auth-URL, обмен кода на токены, извлечение user-infosrc/lib/oauth-token-lifecycle.ts→getProviderConfig()(строки 175–351) — монолитная цепочкаif (provider === ...)с захардкоженными token-endpoint'ами, `process.env.*_CLIENT_ID/SE
Read the thread · 2026-06-14 · closed · 3 comments
tools.ts — god-file: 258 КБ / ~6874 строк / ~379 инструментов в одном массиве
Проблема
src/lib/mcp/tools.ts — монолит 258 КБ / ~6874 строк, один плоский module-level массив TOOL_DEFINITIONS: ToolDefinition[] (~379 инструментов, строки 71–6869) для 20+ сервисов (gmail, calendar, drive, googleAds, GSC, GTM, openRouter, twitter, linkedin, slack, notion, hubspot, github, jira, salesforce, meta-ads, twitter-ads, telegram, semrush, ahrefs, stripe, airtable, calendly, youtube, threads, email). Роутинг — getToolsByActions() (строка 6871), тривиальный `Set.ha
Read the thread · 2026-05-31 · closed · 3 comments
Чувствительные данные пишутся в auditLog и логи без редактирования
Проблема
Обработчик MCP-инструментов сохраняет полные параметры вызова и текст ошибок без редактирования.
src/lib/mcp/handler.ts:49 — params: JSON.parse(JSON.stringify(params)) пишется в auditLog на каждый вызов. Для email_send_message это сохраняет тело письма и всех получателей; для write-инструментов — произвольные payload'ы.
src/lib/mcp/handler.ts:94 — error: fullError пишется в auditLog; fullError может содержать тело ответа апстрима.
Дополнительно ~30 мест де
Read the thread · 2026-05-31 · closed · 3 comments
Most recent
CI failure on master
Automated CI gate detected failing checks: test
- Branch:
master - Commit:
7910db59985f6852a9ec952ce707a7701634641b - CI run: https://github.com/alifanov/scopegate/actions/runs/29688231965
test
[32m✓[39m src/app/api/projects/[projectId]/endpoints/[endpointId]/__tests__/route.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 34[2mms[22m[39m
[90mstderr[2m | src/lib/__tests__/endpoint-permissions.test.ts
[22m[39m[2m2026-07-19T13:06:33.029Z[0m [33mWARN[0m [1m[Bet
[Read the thread](https://github.com/alifanov/scopegate/issues/165) · 2026-07-19 · closed · external user · 1 comment
### fix(deps): устранить XSS в better-auth (High) + arbitrary file read в @babel/core (Low)
Dependabot нашёл 2 уязвимости на `master`.
## 🔴 High — better-auth stored XSS (GHSA-86j7-9j95-vpqj)
- **Пакет:** `better-auth` (прямая зависимость, `~1.6.11`)
- **Уязвимо:** `< 1.6.13` → **установлено 1.6.11**
- **Патч:** `1.6.13`
- **Суть:** stored XSS через `javascript:` в `redirect_uri` в `oidc-provider` и **mcp**. Нас касается напрямую — у нас MCP-сервер (`/api/mcp/[apiKey]`).
**Фикс:**
```bash
pnpm add -S better-auth@^1.6.13
(обновит package.json + pnpm-lock.yaml вместе — вручную
Read the thread · 2026-07-14 · closed · 1 comment
CI failure on master
Automated CI gate detected failing checks: test
- Branch:
master - Commit:
6944d48a9d9f32af032f617c52bb2efc29c9fcb1 - CI run: https://github.com/alifanov/scopegate/actions/runs/29242279133
test
[90mstderr[2m | src/lib/mcp/__tests__/error-sanitization.test.ts[2m > [22m[2mgoogleCalendarFetch – error sanitization (Fix 5)[2m > [22m[2mon API error, throws generic message without leaked details
[22m[39m[ScopeGate] Google Calendar API error (403)
[32m✓[39m src/lib/mc
[Read the thread](https://github.com/alifanov/scopegate/issues/162) · 2026-07-13 · closed · external user · 1 comment
### Добавить TTL-кэш для googleAds_list_ad_groups и googleAds_list_keywords
## Problem
p99 латентность двух Google Ads инструментов за последние 7 дней:
- `mcp.tool googleAds_list_ad_groups` — p99 = **1 286 мс**
- `mcp.tool googleAds_list_keywords` — p99 = **1 267 мс**
Оба попадают в диапазон 500 мс – 2 с («медленно, исследовать»). Это read-only операции с данными, которые меняются редко — Google Ads API отвечает медленно, но нагрузку можно снизить кэшированием на стороне MCP.
Сравнение с предыдущим снапшотом (2026-06-24): ранее не отслеживались, впервые появились в
[Read the thread](https://github.com/alifanov/scopegate/issues/156) · 2026-06-25 · closed · 0 comments
### Снизить количество HTTP 500 на /api/mcp/[apiKey]: 34 ошибки в неделю сохраняются
## Problem
На эндпоинте `/api/mcp/[apiKey]` стабильно 34 HTTP 500 за каждые 7 дней (данные SigNoz за период 2026-06-17 – 2026-06-24). Проблема зафиксирована в трёх последовательных снапшотах (2026-06-08, 2026-06-20, 2026-06-24). Предыдущий issue #140 был закрыт после улучшения логирования (commit 24498c4), но root cause устранён не был — количество ошибок не снизилось.
## What to do
1. Просмотреть новые структурированные логи (`error_type`, `stack`) в SigNoz Logs для `/api/mcp/[apiKey]` — они
[Read the thread](https://github.com/alifanov/scopegate/issues/154) · 2026-06-24 · closed · 2 comments
### Устранить дублирование ретраев/разбора сетевых ошибок в per-service fetch-обёртках MCP (isRetriableNetworkError дублируется в linkedin.ts и threads.ts)
## Проблема
Транспортный слой MCP — это `service-fetch.ts` (единый transport) плюс ~десяток тонких per-service обёрток (`twitter.ts`, `linkedin.ts`, `threads.ts`, `slack.ts`, `youtube.ts`, …), каждая из которых заново реализует разбор ошибок, ретраи и тайм-ауты. Логика дублируется буквально:
- `function isRetriableNetworkError(...)` определена **дважды** и идентично: `src/lib/mcp/linkedin.ts:64` и `src/lib/mcp/threads.ts:16` (ECONNRESET / ECONNREFUSED / ENOTFOUND).
- Цикл ретраев со `sleep` +
[Read the thread](https://github.com/alifanov/scopegate/issues/149) · 2026-06-22 · closed · 1 comment
### Свернуть god-файлы определений MCP-инструментов (GTM 1346 / google-ads 1210 / youtube 922 строк) в генератор из метаданных
## Проблема
Определения MCP-инструментов разрослись в god-файлы с повторяющимися блоками:
- `src/lib/mcp/tools/google-tag-manager.ts` — **1346 строк** (~50 инструментов)
- `src/lib/mcp/tools/google-ads.ts` — **1210 строк** (~40 инструментов)
- `src/lib/mcp/tools/youtube.ts` — **922 строки**
Каждый инструмент — почти идентичный объект (`name` / `description` / `action` / `inputSchema` / `handler`), где `handler` обычно в 1–10 строк вызывает соответствующий `*Fetch`-хелпер. Чтобы понять «какие
[Read the thread](https://github.com/alifanov/scopegate/issues/148) · 2026-06-22 · closed · 1 comment
### Снизить p99 linkedin_create_post ниже 1 с (сейчас 2.0 с)
## Проблема
Инструмент `mcp.tool linkedin_create_post` имеет p99 латентность **2 007 мс** за последние 7 дней.
Порог для MCP-инструментов: > 2 с = критично (инструмент занимает 6.7% от 30-секундного таймаута handler.ts).
Сравнение с предыдущим периодом: ранее не отслеживалось, первый снапшот с этим инструментом.
## Что делать
1. Добавить детальный трейсинг внутри `linkedin_create_post`: разбить спан на sub-span'ы (подготовка payload, HTTP-запрос к LinkedIn, обработка ответа) — выяснить, где
[Read the thread](https://github.com/alifanov/scopegate/issues/147) · 2026-06-22 · closed · 2 comments
### Ограничить размер скачиваемых медиа потоково — буферизация всего тела до проверки лимита (DoS памяти)
## Problem
Хелперы скачивания медиа считывают **всё тело ответа в память** через `arrayBuffer()` и только потом проверяют лимит размера. Вредоносный/подконтрольный апстрим, который не отдаёт `Content-Length` и стримит сколь угодно большой ответ, исчерпает память Node-процесса до того, как сработает проверка.
- `src/lib/mcp/image-utils.ts:47` — `downloadImage()` делает `await res.arrayBuffer()` и проверяет `MAX_SIZE_BYTES` (5 МБ) **после** полной буферизации. Предварительной проверки `Content-L
[Read the thread](https://github.com/alifanov/scopegate/issues/144) · 2026-06-21 · closed · 2 comments
### Снизить риск таймаута threads_publish_thread (p99=18.7s из 30s лимита)
## Problem
`mcp.tool threads_publish_thread` показывает **p99=18.7s** при лимите в 30s (`handler.ts`). `service-fetch threads` — p99=10.7s.
Оставшийся буфер 11.3s минимален и не учитывает стартовые накладные расходы (auth, запрос к DB). При дальнейшей деградации Threads API пользователи начнут получать timeout-ошибки при публикации.
Для сравнения: `mcp.tool linkedin_create_post` p99=1.8s — тот же класс задач, на порядок быстрее.
## What to do
1. В `src/lib/mcp/service-fetch.ts` — убедиться,
[Read the thread](https://github.com/alifanov/scopegate/issues/133) · 2026-06-17 · closed · 2 comments
### Расследовать 500-ошибки на /api/mcp/[apiKey] (16 за 24ч)
## Problem
За последние 24 часа зафиксировано **16 HTTP 500** на эндпоинте `/api/mcp/[apiKey]` — единственный публичный MCP-эндпоинт сервиса.
Error rate составляет 0.36% (120 ошибок на 33 620 запросов). Логи ошибок пусты в SigNoz — трассировки есть, но тело ошибок не захвачено.
Предыдущий период: нет baseline по 24h-окну в текущем снимке.
## What to do
1. Открыть SigNoz → Traces → фильтр `http.status_code = 500` + `http.route = /api/mcp/[apiKey]`
2. Посмотреть `error` / `exception.message`
[Read the thread](https://github.com/alifanov/scopegate/issues/132) · 2026-06-17 · closed · 2 comments
### Декларативные дескрипторы MCP-инструментов — ~89% хендлеров это механический шаблон
## Проблема
После сплита god-файла (#71) инструменты разнесены по 26 файлам в `src/lib/mcp/tools/` (~7 079 строк, ~379 инструментов). Но ~85–89% кода каждого хендлера — механический шаблон: разбор `params` → сборка query/body → вызов провайдер-fetch → возврат результата. Уникальная доменная логика есть лишь у ~15–20 инструментов (загрузка медиа в Twitter, многошаговые обмены и т.п.).
Поверх этого дублируются провайдер-обёртки fetch: `githubFetch`, `jiraFetch`, `hubspotFetch`, `notionFetch` и д
[Read the thread](https://github.com/alifanov/scopegate/issues/118) · 2026-06-14 · closed · 0 comments
The remaining reports are on [the project's issue tracker](https://github.com/alifanov/scopegate/issues).