Allow Enabling/Disabling Default Codex Apps from CLI and Per-Client App Management

Open 💬 4 comments Opened Jun 21, 2026 by amarbunty
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

What version of Codex CLI is running?

codex-cli 0.141.0

What subscription do you have?

PRO

Which model were you using?

gpt-5.5

What platform is your computer?

Darwin 25.5.0 arm64 arm

What terminal emulator and version are you using (if applicable)?

default mac terminal

Codex doctor report

What issue are you seeing?

Title: Allow Enabling/Disabling Default Codex Apps from CLI and Per-Client App Management

Summary

The Codex CLI currently loads all configured/default MCP apps and integrations, which can consume unnecessary context and tokens even when those apps are not needed for a particular task.

It would be helpful to provide granular control over app availability directly from the CLI, without affecting ChatGPT Web settings.

What steps can reproduce the bug?

Problem

Many users use Codex CLI for focused development workflows and do not require all configured apps (e.g., Gmail, Photoshop, Playwright, Figma, etc.) during every session.

Currently:

  • Default apps appear to be loaded automatically.
  • Unused apps increase context size and token consumption.
  • Disabling an app globally may also affect ChatGPT Web workflows.
  • There is no obvious way to temporarily exclude apps from a CLI session while keeping them available elsewhere.

Example:

/mcp

Shows all available apps and tools, even when only one or two are required for the current task.

What is the expected behavior?

Proposed Solution

1. Enable/Disable Apps from CLI

Allow users to toggle apps directly from Codex CLI.

Examples:

codex apps disable gmail
codex apps disable photoshop
codex apps enable gmail

or

/mcp disable gmail
/mcp enable gmail
2. Session-Only App Selection

Start a Codex session with only specific apps loaded.

codex --apps github,playwright

or

codex session --only github

This would prevent unnecessary tools from being included in the context.

3. Remove Apps from CLI Without Affecting ChatGPT Web

Support separate app configurations for:

  • ChatGPT Web
  • Codex CLI

Example:

codex apps remove gmail

This would remove Gmail from Codex CLI visibility while keeping it enabled in ChatGPT Web.

Configuration example:

{
  "cli": {
    "enabledApps": ["github", "playwright"]
  },
  "chatgpt": {
    "enabledApps": ["github", "gmail", "photoshop"]
  }
}
4. Default App Profile

Allow users to define a lightweight default profile.

codex profile create minimal
codex profile add github
codex profile add laravel-boost
codex profile use minimal

Benefits

  • Reduced token usage and context overhead.
  • Faster tool discovery and startup experience.
  • Cleaner /mcp output.
  • Better privacy and principle-of-least-access.
  • Separation between ChatGPT Web and Codex CLI workflows.
  • Improved developer productivity when working with a focused toolset.

Expected Behavior

Users should be able to:

  • Disable specific apps from Codex CLI.
  • Enable them again when needed.
  • Run sessions with only selected apps loaded.
  • Maintain separate app configurations for ChatGPT Web and Codex CLI.
  • Reduce unnecessary token consumption caused by unused tool definitions.

Additional Context

In environments with multiple connected apps, the /mcp command can list dozens of tools that are never used during a session. Providing per-client and per-session app management would help keep the Codex context lean and improve overall efficiency.

Additional information

_No response_

View original on GitHub ↗

4 Comments

amarbunty · 2 months ago

<img width="1139" height="655" alt="Image" src="https://github.com/user-attachments/assets/0d5484fa-c864-4e2d-ba5b-9d7efb598b0e" />

check

• codex_apps
• Auth: Bearer token
• Tools: adobe_photoshop.applyAdjustments, adobe_photoshop.applyEffects, adobe_photoshop.blurBackground, adobe_photoshop.getOptionsForAdjustments,
adobe_photoshop.instructEdit, adobe_photoshop.removeBackground, adobe_photoshop.selectSubject, adobe_photoshop.selectionByPrompt, adobe_photoshop.undoEdits,
adobe_photoshop.zeroCredits, gmail.apply_labels_to_emails, gmail.archive_emails, gmail.batch_modify_email, gmail.batch_read_email,
gmail.batch_read_email_threads, gmail.bulk_label_matching_emails, gmail.create_draft, gmail.create_label, gmail.delete_emails, gmail.forward_emails,
gmail.get_profile, gmail.list_drafts, gmail.list_labels, gmail.read_attachment, gmail.read_email, gmail.read_email_thread, gmail.search_email_ids,
gmail.search_emails, gmail.send_draft, gmail.send_email, gmail.update_draft

github-actions[bot] contributor · 2 months ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #28443

Powered by Codex Action

amarbunty · 2 months ago

Thanks for flagging #28443.

While there is some overlap in the underlying problem (unwanted apps/plugins being injected into the model context), I believe this request addresses a different and broader use case.

Issue #28443 is primarily a bug report stating that:

Per-plugin enabled = false settings are ignored for certain remote curated plugins.

The expected outcome of #28443 is that existing disable settings should work correctly.

This feature request goes beyond fixing that bug and proposes a more complete app-management architecture for Codex.

Key Differences

1. Explicit App Management

Instead of only fixing enabled=false, Codex should provide first-class commands for managing app visibility and availability:

codex apps list
codex apps enable <app>
codex apps disable <app>
codex apps remove <app>

This gives users direct control over which apps are exposed to a session.

2. Independent Configuration Per Client

Codex CLI and Codex Desktop/App currently appear to share app availability in ways that are not always desirable.

Many users want:

ChatGPT Web/Desktop
    ├── Gmail
    ├── Photoshop
    ├── Figma
    └── Other productivity apps

Codex CLI
    ├── GitHub
    └── Laravel Boost

without needing to globally disable apps everywhere.

A developer workflow and a ChatGPT workflow often have very different requirements.

3. Token and Context Optimization

Every unnecessary MCP server, app, skill, plugin, or tool definition contributes additional context that the model must process.

Providing a way to selectively load only required apps would:

  • Reduce token consumption.
  • Reduce prompt/context size.
  • Reduce MCP initialization overhead.
  • Improve session focus.
  • Improve privacy through least-privilege access.
4. Session-Level Tool Selection

Example:

codex --apps github,laravel-boost

or

codex session --only github

Only the requested apps should be loaded into the session.

5. Per-Project Configuration with Global Override Support

In addition to global app settings, Codex should support project-level configuration files that can override the user's default tool/app configuration.

This would allow different projects to expose only the tools they actually require.

Example

Global configuration:

{
  "enabledApps": [
    "github",
    "gmail",
    "playwright",
    "figma",
    "laravel-boost"
  ]
}

Laravel project:

.codex/config.json

{
  "enabledApps": [
    "github",
    "laravel-boost"
  ]
}

Frontend project:

.codex/config.json

{
  "enabledApps": [
    "github",
    "figma",
    "playwright"
  ]
}

When entering a project directory, Codex would automatically apply the project configuration and override global defaults.

Configuration Priority
Project Configuration
        ↓
Workspace Configuration
        ↓
User Global Configuration
        ↓
System Defaults
CLI Examples
codex apps list

codex apps disable gmail --global

codex apps disable playwright --project

codex apps enable figma --project

codex apps reset --project
Benefits
  • Different projects use different toolsets.
  • Reduced context size and token consumption.
  • Faster tool discovery and MCP initialization.
  • Better security through least-privilege access.
  • Reproducible team configurations stored in version control.
  • Eliminates the need to manually toggle apps when switching projects.
Team Collaboration
.codex/
├── config.json
└── profiles/
    ├── frontend.json
    ├── backend.json
    └── security.json

This allows all team members and CI agents to use the same Codex environment without manual setup.

Real-World Example

A developer may have 20+ apps connected globally:

gmail
photoshop
figma
playwright
github
laravel-boost
...

But for a Laravel backend project, only:

github
laravel-boost

should be loaded.

The project configuration should automatically override global defaults, preventing unnecessary MCP tool definitions, skills, and app metadata from being injected into the model context.

Existing Related Functionality

Codex already supports configuration layering and profiles, which demonstrates that configuration precedence is a supported pattern. Extending that concept to app visibility and tool loading would fit naturally within the existing configuration model.

For these reasons, I believe this request is complementary to #28443 rather than a duplicate. A fix for #28443 would ensure disable flags work correctly, while this proposal introduces a broader mechanism for app lifecycle management, per-client separation, and project-aware tool loading.

Necmttn · 2 months ago

Per-client app enablement needs to be recorded on the session, not only stored as config.

For each run, persist a tool/app manifest with app id, tool names, schema hash, source config, enabled/disabled reason, and surface/client. That gives users an audit trail for which schemas entered context and lets token regressions be traced to a specific app bundle.

---

_Generated with ax._