А можно в 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 отключить нельзя; сначала нужно найти источник, который его добавляет.