Panic when using Option + <- to navigate (related to en-dash?)
What version of Codex is running?
codex-cli 0.34.0
Which model were you using?
gpt-5 high
What platform is your computer?
Darwin 24.5.0 arm64 arm
What steps can reproduce the bug?
Using ghostty on macOS, run
COLORBT_SHOW_HIDDEN=1 RUST_BACKTRACE=full codex
Type:
Look at 'Screenshot 2025-09-14 at 1.37.16 PM.png
Then hit Option + <–
Ghostty version:
ghostty --version
Ghostty 1.1.3
Version
- version: 1.1.3
- channel: stable
Build Config
- Zig version: 0.13.0
- build mode : builtin.OptimizeMode.ReleaseFast
- app runtime: apprt.Runtime.none
- font engine: font.main.Backend.coretext
- renderer : renderer.Metal
- libxev : main.Backend.kqueue
What is the expected behavior?
Cursor moves to the single-quote ' character.
What do you see instead?
Observe a panic
▌Look at 'Screenshot 2025-09-14 at 1.37.16 PM.pngThe application panicked (crashed).
Message: byte index 42 is not a char boundary; it is inside '\u{202f}' (bytes 41..44) of Look at 'Screenshot 2025-09-14 at 1.37.16 PM.png
Location: tui/src/bottom_pane/textarea.rs:144
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
2: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
3: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
4: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
5: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
6: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
7: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
8: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
9: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
10: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
11: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
12: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
13: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
14: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
15: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
16: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
17: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
18: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
19: __mh_execute_header<unknown>
at <unknown source file>:<unknown line>
Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.
Additional information
There's a secondary strangeness here where when I added RUST_BACKTRACE=full to the codex command, the message telling me to add it disappeared (as I'd expect), but it's not clear adding COLORBT_SHOW_HIDDEN=1 did anything, since the output looks unchanged and still asks me to include the env var.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗