Codex App truncates injected Available skills metadata and deterministically drops the same repo-local skills
What version of the Codex App are you using?
Codex App 26.417.41555 (CFBundleVersion 1858)
What subscription do you have?
Pro
What platform is your computer?
macOS / Darwin arm64
What issue are you seeing?
Codex App is not failing to discover my repo-local skills on disk. Instead, it appears to truncate the injected ### Available skills block before the model sees it, which causes the same tail subset of skills to be omitted from every desktop-app session.
This is deterministic in my workspace:
- Repo-local skills on disk:
60 - System skills also available:
5 - In the desktop app session prompt, only
55unique skill names are injected - The same
9repo-local skills are always missing from the injected list - In CLI, these skills do not go missing in the same way
Missing repo-local skills in the desktop app session:
thesis-tracker
trello
vault-architecture
web-image-search
x-rebound-framework
xlsx
yimeng-tst-decoder
zbgd-video-tts
zbgd-writer
This breaks implicit/adaptive skill routing in the app, because the model never sees those skills as available even though they are present on disk.
Why I think this is injection truncation rather than discovery failure
I checked the local rollout file for the affected desktop-app thread and found that the developer-injected prompt block includes:
"truncation_policy": { "mode": "tokens", "limit": 10000 }
In the same rollout, the injected ### Available skills section ends after theme-factory / tracking-report-writing, and the 9 skills above are absent.
That strongly suggests the desktop app is truncating the injected skills metadata block rather than failing to discover those skill folders.
I also see desktop logs like:
Skills/list request cwdsCount=1 forceReload=false
Skills/list missing short_description count ... missingShortDescriptionCount=63
Skills/list ok entryCount=1
So the app is clearly going through skills/list, but the final session-visible skill list is still incomplete.
Reproduction
In a repo/workspace with many repo-local skills:
- Put many valid skills under the repo-local skill directory (in my case the source of truth is
.shared/skills/and the project mapping points to the same content). - Open the workspace in Codex App.
- Start a fresh conversation and ask the agent to list the explicitly available skills.
- Compare that list with the actual folders under the repo-local skill directory.
- Repeat in a fresh desktop-app thread.
Actual behavior
The app injects a truncated Available skills list, and the same trailing subset of repo-local skills is silently omitted from the model prompt on every fresh app thread.
Expected behavior
The desktop app should not silently drop repo-local skills from the model-visible Available skills list just because the metadata block gets large.
If there is a prompt budget, I would expect one of these instead:
- do not truncate the skills list at all
- compress/summarize metadata without dropping skills
- inject a manifest that preserves all skill names/paths and lazy-loads longer descriptions separately
- fall back to discovery-at-use time rather than deterministically dropping tail entries
A fixed truncation cap here is especially painful because skill bodies are already loaded lazily; the app is only truncating the metadata that tells the model what exists.
Additional context
This is easy to misdiagnose as:
- broken symlink handling
- malformed
SKILL.md - missing frontmatter
- missing UI metadata like
short_description
But in this case the missing set is deterministic and aligned with prompt truncation, not random discovery failure.
If useful, I can provide the exact injected skill list vs. on-disk skill list from the affected workspace.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗