CLI shows `fd --max-depth` values as search patterns
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 90/100
Research direction
Start in codex-rs/shell-command/src/parse_command.rs at parse_fd_query_and_path, then inspect the existing fd_file_finder_variants test. Run the reproducible fd command and the codex-shell-command tests with just test and the dev-small profile. Done means depth-option values are excluded from search operands, the summary shows the actual pattern and path, and numeric search patterns still work.
Written by the indexing model from the issue text.
Description
What version of Codex CLI is running?
codex-cli 0.155.1 (latest stable release at the time of reporting). The parser omission is also present on current main at 78245b47af2a7aafcabe025828ceecca69db4df1.
What subscription do you have?
Not provided; the parser regression reproduces locally without a model request.
Which model were you using?
Model-independent command-summary parsing.
What platform is your computer?
Darwin 27.0.0 arm64 arm; fd 10.4.2.
What terminal emulator and version are you using (if applicable)?
Not recorded.
Codex doctor report
Relevant excerpt from codex doctor --json (unrelated checks and local paths omitted):
{
"schemaVersion": 1,
"codexVersion": "0.155.1",
"overallStatus": "warning",
"checks": {
"installation": {"status": "ok", "summary": "installation looks consistent"},
"config.load": {"status": "ok", "summary": "config loaded"},
"runtime.provenance": {"status": "ok", "summary": "running brew on macos-aarch64"}
}
}
The parser regression reproduces without a model request.
What issue are you seeing?
The compact CLI activity summary treats the value of an fd depth option as the search pattern and shifts the search directory to the wrong argument.
For example:
fd --max-depth 1 --type f -e py . repro/scripts
is summarized as:
• Explored
└ Search 1 in .
Here, 1 belongs to --max-depth. The actual filename pattern is ., and the search root is repro/scripts. The shell command itself executes correctly.
What steps can reproduce the bug?
-
In a test directory, create a small fixture:
mkdir -p repro/scripts touch repro/scripts/example.py -
Ask Codex CLI to execute exactly:
fd --max-depth 1 --type f -e py . repro/scripts -
Compare the compact activity summary with the full command in the transcript.
What is the expected behavior?
Option values should not become search operands. With the existing summary format and path shortening, this command should display:
• Explored
└ Search . in scripts
Additional information
The root cause is in parse_fd_query_and_path: the value-taking option list includes --type, --extension, and --exclude, but omits -d, --max-depth, --min-depth, and --exact-depth. Their values remain in the positional operand list.
The core fix is limited to the option-value list:
diff --git a/codex-rs/shell-command/src/parse_command.rs b/codex-rs/shell-command/src/parse_command.rs
--- a/codex-rs/shell-command/src/parse_command.rs
+++ b/codex-rs/shell-command/src/parse_command.rs
@@ -1941,6 +1941,10 @@ fn parse_fd_query_and_path(tail: &[String]) -> (Option<String>, Option<String>)
"--extension",
"-E",
"--exclude",
+ "-d",
+ "--max-depth",
+ "--min-depth",
+ "--exact-depth",
"--search-path",
],
);
A small local change adding these four options fixes the reproduced parser failure. Regression coverage extends the existing fd_file_finder_variants test for the depth options, attached values, and a genuine numeric search pattern (fd 1 --max-depth 2 repro/scripts). All 192 codex-shell-command tests pass using just test with the dev-small profile and Rust 1.98.1.
Related: #9079 also concerns misleading Search / Explored summaries, but involves a mutating pipeline rather than fd option values.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- Avg merge
- 1m
- Merged PRs (30d)
- 1k
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from openai/codex
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug CLI windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
macOS sandbox blocks hw.optional.arm64 sysctl, causing Flutter to misdetect Apple Silicon as x64 Openbug CLI sandbox
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
CLI config enhancement skills
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
bug CLI config sandbox windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
gitbutlerapp/gitbutler#15998 · 1 comment ·
-
bug triage:deciding
Difficulty 1/5 Under an hour Newbie friendliness 88/100
open-telemetry/otel-arrow#4132 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100