Feature Request: Add --format to `codex features list` output
Resolved 💬 4 comments Opened Dec 21, 2025 by DCjanus Closed Mar 14, 2026
💡 Likely answer: A maintainer (etraut-openai, contributor)
responded on this thread — see the highlighted reply below.
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.
4 Comments
Just parse it, man
Parsing is possible, but the format option is also about making the output easier to read for humans.
Tables/markdown are much more scannable in terminals and docs, while JSON remains best for scripts.
Default can stay
plain; the flag just adds a clearer view when needed.I don't know that a new command-line option is the right answer here. Every new option that we add needs to be documented, localized, and maintained. This doesn't feel like it meets the bar.
We can leave this feature request open to see if this is a problem other users would like to see addressed. If it gets enough upvotes, we can look at potential solutions.
This feature request hasn't received enough upvotes, so I'm closing it.