Codex App truncates injected Available skills metadata and deterministically drops the same repo-local skills

Open 💬 1 comment Opened Apr 23, 2026 by KevinSpringer1

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 55 unique skill names are injected
  • The same 9 repo-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:

  1. 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).
  2. Open the workspace in Codex App.
  3. Start a fresh conversation and ask the agent to list the explicitly available skills.
  4. Compare that list with the actual folders under the repo-local skill directory.
  5. 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.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗