Skip to content

Надо найти способ отключить бесполезный codex_app.github #410

Description

@skulidropek
А можно в Codex отключить codex_app.github
Думал на протяжении пары секунд
Да, если речь о доступе Codex к GitHub-коннектору/интеграции, его обычно можно отключить на уровне подключений или прав доступа.
Что проверить:
В настройках ChatGPT/Codex
Открой настройки подключений/коннекторов и отключи GitHub, либо отзови доступ для Codex/ChatGPT.
В GitHub
Зайди в GitHub → Settings → Applications → Authorized OAuth Apps / GitHub Apps и отзови доступ у приложения, связанного с Codex/OpenAI/ChatGPT.
В конкретной среде/проекте
Если codex_app.github указан как доступный tool/plugin/connector в конфиге окружения, его нужно убрать из списка разрешённых инструментов. Название похоже именно на внутренний идентификатор GitHub-коннектора.
Важный нюанс: я не могу отключить его за тебя из этой беседы, но могу подсказать точное место, если покажешь, где именно ты видишь codex_app.github: в Codex CLI, web-интерфейсе, config.toml, MCP-конфиге или настройках ChatGPT.
а можно просто через codex Cli отключить этот инструмент?
Разберу это именно как настройку Codex CLI: нужно отличить локальные tools/MCP от встроенного коннектора, потому что отключаются они разными механизмами.
Думал на протяжении 7s
Да, для MCP-инструментов — можно, но для встроенного codex_app.github через Codex CLI, похоже, нет надёжного штатного способа.
codex_app.github выглядит не как обычный MCP-сервер, а как встроенное app/connector-backed tool. По открытым issue в openai/codex, пользователи как раз жалуются, что CLI умеет отключать/настраивать MCP-серверы, но не даёт нормально отключить built-in apps вроде GitHub; попытки через apps.github.enabled=false тоже могут игнорироваться.
Что реально можно попробовать:
codex -c 'apps.github.enabled=false'
или профиль в ~/.codex/config.toml:
[profiles.no-github.apps.github]
enabled = false
запуск:
codex --profile no-github
Но по текущим сообщениям в репозитории Codex это может не сработать для app/connectors, даже если синтаксис выглядит логичным.
Для MCP-серверов рабочая схема другая:
codex -c 'mcp_servers.github.enabled=false'
или в конфиге:
[mcp_servers.github]
enabled = false
Такой подход относится именно к MCP: в обсуждениях Codex указано, что MCP обычно отключают через enabled = false в ~/.codex/config.toml или .codex/config.toml, либо через -c 'mcp_servers.<name>.enabled=false'.
Самый надёжный вариант для codex_app.github сейчас — отозвать GitHub-доступ у Codex/OpenAI на стороне GitHub или ChatGPT/Codex settings, а не пытаться отключить только из CLI. Тогда даже если инструмент виден в сессии, он не сможет работать с GitHub-данными.
Да, если GitHub виден именно в /mcp, это уже проще: его можно отключить как MCP-сервер, без трогания GitHub App/connector. Проверю формулировку команды аккуратно, чтобы не смешать временное отключение с записью в конфиг.
Думал на протяжении 4s
Да. Если в /mcp есть сервер github, то разово отключить его для запуска можно так:
codex -c 'mcp_servers.github.enabled=false'
Эквивалент через длинный флаг:
codex --config 'mcp_servers.github.enabled=false'
-c/--config принимает вложенные ключи через dot notation, например mcp_servers.context7.enabled=false; значения парсятся как TOML.
Но важное различие:
codex -c 'mcp_servers.github.enabled=false'
— это только для этого запуска.
Чтобы отключить постоянно, нужно записать в ~/.codex/config.toml:
[mcp_servers.github]
enabled = false
Codex хранит MCP-конфигурацию в config.toml, по умолчанию в ~/.codex/config.toml.
Если хочешь именно командой записать это в конфиг, можно так:
python3 - <<'PY'
from pathlib import Path
p = Path.home() / ".codex" / "config.toml"
p.parent.mkdir(parents=True, exist_ok=True)
text = p.read_text() if p.exists() else ""
if "[mcp_servers.github]" in text:
lines = text.splitlines()
out = []
in_section = False
saw_enabled = False
for line in lines:
stripped = line.strip()
if stripped == "[mcp_servers.github]":
in_section = True
saw_enabled = False
out.append(line)
continue
if in_section and stripped.startswith("[") and stripped.endswith("]"):
if not saw_enabled:
out.append("enabled = false")
in_section = False
if in_section and stripped.startswith("enabled"):
out.append("enabled = false")
saw_enabled = True
else:
out.append(line)
if in_section and not saw_enabled:
out.append("enabled = false")
p.write_text("\n".join(out) + "\n")
else:
with p.open("a") as f:
if text and not text.endswith("\n"):
f.write("\n")
f.write("\n[mcp_servers.github]\nenabled = false\n")
PY
Потом перезапусти Codex и проверь:
/mcp
Если github исчез из MCP-раздела, значит отключилось. Если github_* инструменты всё равно остаются вне /mcp, это уже не MCP, а GitHub App/connector.
5:40:00] ~/~/app (main)> codex -c 'mcp_servers.github.enabled=false'
Error loading config.toml: invalid transport
in mcp_servers.github
[5:40:01] ~/~/app (main)> Думал на протяжении нескольких секунд
Да, этот error означает: одного override enabled=false недостаточно, потому что Codex всё равно валидирует секцию [mcp_servers.github] и видит там неполную/некорректную конфигурацию транспорта.
Есть похожий баг/ограничение: override через --config/-c может падать с invalid transport, если MCP-сервер описан не там или неполно; при этом -c сам по себе поддерживает dot notation, но секция MCP всё равно должна проходить валидацию.
Сделай так:
grep -n -A20 '^\[mcp_servers\.github\]' ~/.codex/config.toml .codex/config.toml 2>/dev/null
Скорее всего найдёшь что-то вроде:
[mcp_servers.github]
enabled = false
без command, args или url. Это и ломает загрузку: Codex видит сервер github, но не понимает его transport.
Чтобы отключить и не ловить ошибку, лучше не оставлять “пустую” секцию. Удали всю секцию [mcp_servers.github] из конфига:
python3 - <<'PY'
from pathlib import Path
for p in [Path.home() / ".codex" / "config.toml", Path(".codex/config.toml")]:
if not p.exists():
continue
lines = p.read_text().splitlines()
out = []
skip = False
for line in lines:
s = line.strip()
if s == "[mcp_servers.github]":
skip = True
continue
if skip and s.startswith("[") and s.endswith("]"):
skip = False
if not skip:
out.append(line)
p.write_text("\n".join(out).rstrip() + "\n")
print(f"cleaned {p}")
PY
Потом запускай:
codex
и внутри:
/mcp
Если github исчез из MCP — готово.
Если тебе нужен вариант “отключить, но оставить секцию”, тогда секция должна быть полной, например для stdio-сервера:
[mcp_servers.github]
enabled = false
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
или для remote/url, если твоя версия Codex это поддерживает:
[mcp_servers.github]
enabled = false
url = "https://..."
Но практически: для полного отключения GitHub MCP лучше удалить всю секцию, а не оставлять только enabled = false.
[5:40:01] ~/~/app (main)> grep -n -A20 '^\[mcp_servers\.github\]' ~/.codex/config.toml .codex/config.toml 2>/dev/null
[5:40:39] ~/~/app (main)
Думал на протяжении нескольких секунд
Твой grep ничего не нашёл, значит в этих двух файлах нет секции:
[mcp_servers.github]
Поэтому команда:
codex -c 'mcp_servers.github.enabled=false'
не “отключает существующий сервер”, а фактически создаёт поверх конфига неполную MCP-секцию:
[mcp_servers.github]
enabled = false
А Codex требует у MCP-сервера transport: command, url, http_url и т.п. Поэтому и падает:
invalid transport in `mcp_servers.github`
То есть в твоём случае такой командой отключить нельзя, потому что локального MCP-сервера github в конфиге нет.
Проверь, откуда он реально берётся:
find ~/.codex .codex -type f -maxdepth 4 -print 2>/dev/null
и затем:
grep -Rni 'github\|mcp_servers' ~/.codex .codex 2>/dev/null
Ещё проверь переменную окружения:
echo "$CODEX_HOME"
Если она задана, конфиг может быть не в ~/.codex, а там:
grep -Rni 'github\|mcp_servers' "$CODEX_HOME" 2>/dev/null
Если после этого github всё равно виден в /mcp, но в конфиге его нет, то это, скорее всего, не твой локально объявленный MCP-сервер, а сервер/инструмент, подтянутый Codex из другого источника: workspace, аккаунт, connector/app или встроенная интеграция. В таком случае mcp_servers.github.enabled=false не поможет.
Для локального MCP отключение командой работает только когда сервер уже полностью описан, например:
[mcp_servers.github]
command = "..."
args = [...]
enabled = true
Тогда можно было бы:
codex -c 'mcp_servers.github.enabled=false'
А у тебя секции нет, поэтому текущий строгий вывод такой: через -c 'mcp_servers.github.enabled=false' этот GitHub отключить нельзя; сначала нужно найти источник, который его добавляет.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions