Automation prompt save strips later skill links, preserving only the first markdown skill reference
What version of the Codex App are you using (From “About Codex” dialog)?
Version 26.325.31654 (1272)
What subscription do you have?
_No response_
What platform is your computer?
Darwin 25.3.0 arm64 (macOS 26.3.1)
What issue are you seeing?
When I create or update an automation whose prompt contains multiple markdown skill references, only the first skill link is preserved after save.
The later skill references are stripped out and become blank placeholders in the saved automation.toml.
For example, the intended prompt included multiple skill references like:
[$dead-code-detector](...)[$knip-deadcode](...)[$refactor](...)[$code-quality](...)[$review-and-refactor](...)
But after saving, the stored prompt became effectively:
[$dead-code-detector](...), , , and .
So the automation no longer retains the full set of referenced skills.
This looks like a serialization/parsing bug in automation prompt saving, not a missing-skill or install issue. The skills still exist on disk.
What steps can reproduce the bug?
- In Codex Desktop, create or update an automation.
- Put multiple markdown skill references into the
promptfield, for example:
[$dead-code-detector](/Users/.../dead-code-detector/SKILL.md)[$knip-deadcode](/Users/.../knip-deadcode/SKILL.md)[$refactor](/Users/.../refactor/SKILL.md)
- Save the automation.
- Inspect the saved automation file at:
~/.codex/automations/<automation-id>/automation.toml
- Observe that only the first markdown skill reference is preserved, while later ones are removed and replaced by empty text segments.
What is the expected behavior?
All valid skill references in the automation prompt should be preserved exactly as entered when the automation is saved.
If multiple markdown links are unsupported in this field, the app should reject them explicitly instead of silently corrupting the saved prompt.
Additional information
Observed saved file contents showed this exact failure mode in the prompt field:
[$dead-code-detector](...), , , and .
In my case, the actual saved automation prompt contained this pattern:
prompt = "Audit this repository for dead code and maintainability drift using [$dead-code-detector](/Users/shenghang/.agents/skills/dead-code-detector/SKILL.md), , , and . If repository instruction files exist and a second-pass repo-wide review is useful, also use . ..."
The problem appears to affect prompt persistence, not skill installation:
- the referenced skills still existed on disk
- only the saved automation prompt was corrupted
This may be related to markdown-link parsing or attribute serialization in automation directives / automation prompt persistence.