Personal user has undeletable “Default templates” plugin marked installed-by-admin / installed-by-default
What version of Codex are you using?
Codex CLI: 0.144.1
Platform: macOS, arm64
Plan/workspace: individual user on a personal plan, not a managed/workspace-admin Codex setup
What issue are you seeing?
Codex shows an OpenAI curated plugin named “Default templates” / openai-templates as installed and enabled, but I cannot remove it. The UI presents it as if it was installed by an admin:
- Installed by admin
- Source: Remote · OpenAI Curated
- Auth: Auth on use
- Version: local 0.1.0
- App: Default templates
- Skills include:
artifact-template-analytics-dashboardartifact-template-business-reviewartifact-template-design-reportartifact-template-experiment-analysisartifact-template-financial-budgetartifact-template-investment-committee-memoartifact-template-legal-memorandumartifact-template-market-trends-reportartifact-template-minimal-letterheadartifact-template-operating-calendarartifact-template-operating-reviewartifact-template-project-kickoffartifact-template-project-trackerartifact-template-sales-pipelineartifact-template-simple-dark-modeartifact-template-simple-light-modeartifact-template-strategy-memorandumartifact-template-system-designartifact-template-team-alignmentartifact-template-three-statement-forecast
I do not understand why I have an undeletable “installed by admin” plugin when I am an individual user on a personal plan and there is no workspace admin.
What I tried
I tried removing the plugin through the CLI:
codex plugin remove openai-templates@openai-curated --json
That returned success-like output, but the plugin came back / remained visible in a fresh session.
I also tested via a short-lived app-server stdio session. plugin/installed reports:
{
"id": "openai-templates@openai-curated-remote",
"remotePluginId": "plugin_connector_1p_2330815c823c8191941e5dc465bb899f",
"name": "openai-templates",
"installed": true,
"enabled": true,
"installPolicy": "INSTALLED_BY_DEFAULT",
"installPolicySource": "IMPLICIT_CANONICAL_APP",
"authPolicy": "ON_USE",
"displayName": "Default templates"
}
Calling plugin/uninstall with the exact plugin id returned {} but did not actually uninstall it:
{
"pluginId": "openai-templates@openai-curated-remote",
"response": { "result": {} }
}
Immediately afterward, plugin/installed still showed the plugin as installed and enabled.
Calling plugin/uninstall with the raw remote plugin id returned a backend 403:
Installed-by-default plugins cannot be uninstalled
Workaround
I was able to suppress the connector and skills by manually adding config overrides:
[apps.connector_openai_default_templates]
enabled = false
[[skills.config]]
name = "openai-templates:artifact-template-analytics-dashboard"
enabled = false
# repeated for all openai-templates:* skills
After that, skills/list no longer returns the openai-templates skills. However, plugin/installed still reports the plugin itself as installed and enabled because it is treated as INSTALLED_BY_DEFAULT / IMPLICIT_CANONICAL_APP.
Expected behavior
For a personal, non-managed user:
- Codex should not label a default OpenAI plugin as “Installed by admin” when there is no admin/workspace policy.
- If the user removes or disables a default plugin, that choice should persist across fresh sessions.
plugin/uninstallshould either actually uninstall/disable the plugin or return a clear actionable error. Returning{}while leaving the plugin installed/enabled is misleading.- There should be a first-class way to opt out of the Default templates plugin and all of its skills.
Actual behavior
The plugin is undeletable, remains installed/enabled according to app-server, and is treated by the backend as an installed-by-default implicit canonical app. The only working mitigation I found is manual config overrides for the connector and every skill.
Related issues
This seems related to, but more specific than:
- #29450