macOS: Skills UI offers Uninstall for ~/.agents/skills but removal rejects the path
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.901.51231 (build 8109)
What subscription do you have?
Plus
What platform is your computer?
Darwin 25.6.0 arm64 arm
What issue are you seeing?
The macOS Codex App discovers and displays user-level skills stored under ~/.agents/skills, and its Skills UI offers an Uninstall action for them. However, selecting Uninstall always shows “Failed to uninstall skill” / “无法卸载技能”.
The desktop log contains the more specific error (username redacted):
warning [electron-fetch-handler] Failed to remove skill error="Skill path is not removable: /Users/<username>/.agents/skills/agenthub/SKILL.md"
The affected directory and SKILL.md are owned by the current user and writable. There are no immutable flags, so this is not a macOS filesystem-permission failure.
The app appears to accept removal targets under ~/.codex/skills or a .codex/skills directory, while rejecting the supported user-level discovery path ~/.agents/skills. This creates a mismatch: the app discovers the skill and renders an enabled Uninstall action, but the removal handler rejects the same source path.
What steps can reproduce the bug?
-
On macOS, create a valid user-level skill at
~/.agents/skills/test-skill/SKILL.md:--- name: test-skill description: Test skill used to reproduce the uninstall-path issue. --- Test instructions. -
Open the Codex App and navigate to Skills.
-
Confirm that
test-skillis discovered and shown as a personal/user skill. -
Open the skill actions menu and select Uninstall.
-
Observe the generic “Failed to uninstall skill” message.
-
Inspect the desktop log under
~/Library/Logs/com.openai.codex/; it reportsSkill path is not removablefor the~/.agents/skills/test-skill/SKILL.mdpath.
This reproduces consistently for multiple real directories under ~/.agents/skills, not only symlinks.
What is the expected behavior?
Either:
- Skills discovered from the writable user-level
~/.agents/skillsdirectory should be uninstallable from the Skills UI; or - If that source is intentionally not managed by Codex, the UI should not expose an enabled Uninstall action. It should identify the source and explain that the skill must be removed externally.
The failure toast should also surface an actionable reason rather than only “Failed to uninstall skill”.
Additional information
- Related issue: #39923 reports that externally imported skills cannot be deleted from the Windows desktop app. This report is narrower: macOS, a directly reproducible
~/.agents/skillspath-policy mismatch, and the exactSkill path is not removablebackend error. - Related enhancement: #39459 requests package/source provenance in the skill picker. Showing provenance would help users understand which skills are managed by Codex.
- No files were deleted during diagnosis.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the Skills UI uninstall action and the removal handler that reports “Skill path is not removable,” comparing the supported discovery path ~/.agents/skills with the accepted removal roots. Reproduce with ~/.agents/skills/test-skill/SKILL.md and verify that the behavior is consistent: the skill is removable from the UI, or the action is disabled with an explanation and the failure reason is actionable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100