Skip to content

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

@skulidropek

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions