Local skills under ~/.codex/skills are not injected into runtime "Available skills"
What version of the IDE extension are you using?
26.313.41514
What subscription do you have?
plus
Which IDE are you using?
VS Code
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
Local custom skills stored under ~/.codex/skills do not appear in the runtime "Available skills" list inside Codex sessions.
I can create valid local skills with SKILL.md and agents/openai.yaml, and VS Code can open those files normally, but new Codex threads still only expose built-in .system skills.
Even when I explicitly reference a local skill, for example:
[$example-skill](<HOME>/.codex/skills/example-skill/SKILL.md)
the session behaves as if the skill is not available in the current session.
What steps can reproduce the bug?
- Create a local skill at ~/.codex/skills/example-skill/
- Add a valid SKILL.md
- Add a valid agents/openai.yaml
- Fully restart VS Code
- Open any workspace
- Start a brand new Codex thread
- Explicitly reference the local skill, for example:
[$example-skill](<HOME>/.codex/skills/example-skill/SKILL.md)
I can reproduce the same issue with both of these locations:
- ~/.codex/skills/example-skill
- ~/.codex/skills/private/example-skill
What is the expected behavior?
The local skill should appear in the runtime "Available skills" list and be usable for explicit invocation in the session.
Additional information
This looks like a discovery/runtime injection issue rather than a problem with the individual skill files.
Notes:
- The skill files exist on disk and have valid structure.
- VS Code can open and index them as normal files.
- Restarting VS Code after creating the skill does not fix it.
- The issue reproduces for both root-level and private local skills under ~/.codex/skills.
5 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Update: after re-testing in a brand new session, the issue looks more specific than my original description.
What I now observe is:
$in the composer shows 5 skills totalSo the local skills are not completely undiscoverable: they are visible in the
$skill picker.The inconsistency seems to be that:
This now looks more like a mismatch between UI-discovered skills and runtime/model-visible skills, rather than a total failure to discover local skills.
I’m attaching a screenshot showing:
$picker showing 5 skills in the same session<img width="1510" height="1768" alt="Image" src="https://github.com/user-attachments/assets/92341557-995d-4afc-a420-bb018a9cc791" />
Closing this issue because I was able to resolve it locally.
Root cause appears to be the
policyblock inagents/openai.yaml:policy:
allow_implicit_invocation: false
After removing that block from my personal skills and starting a fresh session, the behavior became consistent again.
What I observed after the change:
$pickerSo in my case this was not a general local-skill discovery failure under
~/.codex/skills, but a behavior difference triggered by that policy setting.Leaving this note here in case it helps others debug similar symptoms.
Your idea is that it still cannot be used by using the
/to call skills, instead, you should use$to call skills. So is this a process that OpenAI intentionally changed regarding UX UI? I also experienced blank when I used@.<img width="768" height="144" alt="Image" src="https://github.com/user-attachments/assets/98a5107f-f697-45b4-a225-dc726b613c3b" />
Anyway, thank you for the useful information - I will switch to calling skills using
$.