openai / openai/codex

Codex Review pane shows phantom Arabic filenames after failed tool calls

Open
#45,196 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug tool-calls
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What happened

During a long-running Codex desktop task with a large working diff, the Last Turn Review pane displayed two phantom zero-line files named لعاب. (+0 -0). They appeared immediately after malformed/failed tool invocations.

The files did not exist in Git or on disk. I verified with:

  • git status --short -z
  • git ls-files -co --exclude-standard
  • a filesystem scan for non-ASCII paths

All checks returned no non-ASCII filenames. The Review pane nevertheless rendered the two Arabic-looking entries.

Expected behavior

Failed tool-call payloads must never be interpreted as file paths or diff entries. Review entries should be derived only from the repository diff, and refreshing should not retain phantom zero-line files.

Reproduction
  1. Run a long Codex desktop task that produces a large diff.
  2. Trigger a malformed tool invocation that fails before execution.
  3. Open Review → Last Turn.
  4. Observe phantom +0 -0 entries not present in Git or the filesystem.
Environment
  • Codex desktop on macOS
  • Observed 2026-09-13
  • Repository worktree with a large mixed staged/unstaged diff

A screenshot is available in the originating Codex task, but is not attached here because it includes workspace source code.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the desktop Review → Last Turn pane and trace how failed tool invocations become review entries. Reproduce the malformed invocation with a large mixed staged/unstaged diff, then compare displayed entries with git status --short -z, git ls-files -co --exclude-standard, and the filesystem. Done means failed payloads produce no phantom paths and refreshing does not retain zero-line entries.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
66/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.