Feature Request: Add --format to `codex features list` output
Resolved 💬 4 comments Opened Dec 21, 2025 by DCjanus Closed Mar 14, 2026
Summary
- Add a
--formatflag tocodex features listto control output format.
Motivation
The current output is plain TSV without headers. Because feature names vary in length, columns drift in typical terminals/fonts, making the list hard to scan.
For example in v0.77.0:
<img width="391" height="274" alt="Image" src="https://github.com/user-attachments/assets/d8ca017c-e3c4-468b-a0d4-b25aff46143b" />
A structured output option (table/markdown/json) would improve readability for humans while also making it easier to consume in scripts or docs.
Proposed behavior
--format plain|table|markdown|json, defaultplain.
Expected output examples
<details>
<summary>table output</summary>
╭──────────────────────────────┬──────────────┬─────────╮
│ name │ stage │ enabled │
├──────────────────────────────┼──────────────┼─────────┤
│ undo │ stable │ true │
├──────────────────────────────┼──────────────┼─────────┤
│ parallel │ stable │ true │
├──────────────────────────────┼──────────────┼─────────┤
│ view_image_tool │ stable │ true │
├──────────────────────────────┼──────────────┼─────────┤
│ ... │ ... │ ... │
├──────────────────────────────┼──────────────┼─────────┤
│ skills │ experimental │ true │
├──────────────────────────────┼──────────────┼─────────┤
│ tui2 │ experimental │ false │
╰──────────────────────────────┴──────────────┴─────────╯
</details>
<details>
<summary>markdown output</summary>
| name | stage | enabled |
|------------------------------|--------------|---------|
| undo | stable | true |
| parallel | stable | true |
| view_image_tool | stable | true |
| ... | ... | ... |
| skills | experimental | true |
| tui2 | experimental | false |
</details>
<details>
<summary>plain output</summary>
undo stable true
parallel stable true
view_image_tool stable true
...
skills experimental true
tui2 experimental false
</details>
<details>
<summary>json output</summary>
{
"features": [
{ "name": "undo", "stage": "stable", "enabled": true },
{ "name": "parallel", "stage": "stable", "enabled": true },
{ "name": "view_image_tool", "stage": "stable", "enabled": true },
{ "name": "...", "stage": "...", "enabled": "..." },
{ "name": "skills", "stage": "experimental", "enabled": true },
{ "name": "tui2", "stage": "experimental", "enabled": false }
]
}
</details>
Backward compatibility
- Keeping the default as
plainpreserves backward compatibility and avoids breaking existing scripts. - A more human-readable default (like
table) could benefit most users, so this is worth discussing.
Reference
- Prior PR (closed due to feature-freeze policy): openai/codex#8387
Notes
- Table and Markdown table output can be implemented via the
tabledcrate, avoiding custom layout logic.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗