Allow Enabling/Disabling Default Codex Apps from CLI and Per-Client App Management
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
/mcpoutput. - 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_
4 Comments
<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
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
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:
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: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:
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:
4. Session-Level Tool Selection
Example:
or
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:
Laravel project:
.codex/config.jsonFrontend project:
.codex/config.jsonWhen entering a project directory, Codex would automatically apply the project configuration and override global defaults.
Configuration Priority
CLI Examples
Benefits
Team Collaboration
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:
But for a Laravel backend project, only:
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.
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._