Zellij rich history replay can hide the conversation tail after long URL-only lines
What version of Codex CLI is running?
codex-cli 0.142.3
What subscription do you have?
Pro
Which model were you using?
gpt-5.5
What platform is your computer?
Darwin 25.5.0 arm64 arm
What terminal emulator and version are you using (if applicable)?
zellij 0.44.3, TERM=xterm-256color
Codex doctor report
<details><summary>Details</summary>
<p>
{
"schemaVersion": 1,
"generatedAt": "1782727019s since unix epoch",
"overallStatus": "fail",
"codexVersion": "0.142.3",
"checks": {
"app_server.status": {
"id": "app_server.status",
"category": "app-server",
"status": "ok",
"summary": "background server is not running",
"details": {
"control socket": "/Users/jeiea/.codex/app-server-control/app-server-control.sock",
"daemon state dir": "/Users/jeiea/.codex/app-server-daemon",
"mode": "ephemeral",
"pid file": "/Users/jeiea/.codex/app-server-daemon/app-server.pid (missing)",
"settings": "/Users/jeiea/.codex/app-server-daemon/settings.json (missing)",
"status": "not running",
"update-loop pid file": "/Users/jeiea/.codex/app-server-daemon/app-server-updater.pid (missing)"
},
"remediation": null,
"durationMs": 0
},
"auth.credentials": {
"id": "auth.credentials",
"category": "auth",
"status": "ok",
"summary": "auth is configured",
"details": {
"auth file": "/Users/jeiea/.codex/auth.json",
"auth storage mode": "File",
"stored API key": "false",
"stored ChatGPT tokens": "true",
"stored agent identity": "false",
"stored auth mode": "chatgpt"
},
"remediation": null,
"durationMs": 0
},
"config.load": {
"id": "config.load",
"category": "config",
"status": "ok",
"summary": "config loaded",
"details": {
"CODEX_HOME": "/Users/jeiea/.codex",
"config.toml": "/Users/jeiea/.codex/config.toml",
"config.toml parse": "ok",
"cwd": "/Users/jeiea/Documents/socra/2025/04/vestway_app",
"enabled feature flags": "shell_tool, unified_exec, shell_snapshot, terminal_resize_reflow, sqlite, hooks, enable_request_compression, multi_agent, tool_search_always_defer_mcp_tools, in_app_browser, browser_use, browser_use_full_cdp_access, browser_use_external, computer_use, plugin_sharing, image_generation, resize_all_images, skill_mcp_dependency_install, mentions_v2, steer, guardian_approval, goals, collaboration_modes, tool_call_mcp_elicitation, personality, fast_mode, tui_app_server, prevent_idle_sleep, auto_compaction, remote_compaction_v2, workspace_dependencies",
"feature flag overrides": "apps=false, tool_suggest=false, plugins=false, prevent_idle_sleep=true",
"feature flags enabled": "31",
"log dir": "/Users/jeiea/.codex/log",
"mcp servers": "0",
"model": "gpt-5.5",
"model provider": "openai",
"sqlite home": "/Users/jeiea/.codex"
},
"remediation": null,
"durationMs": 0
},
"git.environment": {
"id": "git.environment",
"category": "git",
"status": "ok",
"summary": "git version 2.54.0",
"details": {
".git entry": "directory",
"PATH git #1": "/etc/profiles/per-user/jeiea/bin/git",
"PATH git #2": "/opt/homebrew/bin/git",
"PATH git #3": "/usr/bin/git",
"PATH git entries": "3",
"git branch": "ci/fastlane-api-key",
"git build options": "git version 2.54.0; cpu: arm64; no commit associated with this build; sizeof-long: 8; sizeof-size_t: 8; shell-path: /nix/store/55976waa157aqb1ncbwm6b8sa64b6m3h-bash-5.3p9/bin/bash; rust: enabled; feature: fsmonitor--daemon; gettext: enabled; libcurl: 8.20.0; OpenSSL: OpenSSL 3.6.2 7 Apr 2026; zlib-ng: 2.3.3; SHA-1: SHA1_DC; SHA-256: SHA256_BLK; default-ref-format: files; default-hash: sha1",
"git exec path": "/nix/store/a14yxcqvv9x2l9mllgpirzhvz93pgprg-git-2.54.0/libexec/git-core",
"git version": "git version 2.54.0",
"repo detected": "true",
"repo root": "/Users/jeiea/Documents/socra/2025/04/vestway_app",
"selected git": "/etc/profiles/per-user/jeiea/bin/git"
},
"remediation": null,
"durationMs": 36
},
"installation": {
"id": "installation",
"category": "install",
"status": "ok",
"summary": "installation looks consistent",
"details": {
"PATH codex #1": "/opt/homebrew/bin/codex",
"current executable": "/opt/homebrew/bin/codex",
"install context": "brew",
"managed by bun": "false",
"managed by npm": "false",
"managed package root": "not set"
},
"remediation": null,
"durationMs": 5
},
"mcp.config": {
"id": "mcp.config",
"category": "mcp",
"status": "ok",
"summary": "no MCP servers configured",
"details": {},
"remediation": null,
"durationMs": 0
},
"network.env": {
"id": "network.env",
"category": "network",
"status": "ok",
"summary": "network-related environment looks readable",
"details": {
"proxy env vars": "none"
},
"remediation": null,
"durationMs": 0
},
"network.provider_reachability": {
"id": "network.provider_reachability",
"category": "reachability",
"status": "ok",
"summary": "active provider endpoints are reachable over HTTP",
"details": {
"ChatGPT base URL": "https://chatgpt.com/backend-api/ reachable (HTTP 403)",
"reachability mode": "ChatGPT auth"
},
"remediation": null,
"durationMs": 1303
},
"network.websocket_reachability": {
"id": "network.websocket_reachability",
"category": "websocket",
"status": "ok",
"summary": "Responses WebSocket handshake succeeded",
"details": {
"DNS": "2 IPv4, 0 IPv6, first IPv4",
"auth mode": "chatgpt",
"connect timeout": "15000 ms",
"endpoint": "wss://chatgpt.com/backend-api/<redacted>",
"handshake result": "HTTP 101 Switching Protocols",
"model provider": "openai",
"models etag present": "true",
"provider name": "OpenAI",
"proxy env vars": "none",
"reasoning header": "false",
"server model present": "false",
"supports websockets": "true",
"wire API": "responses"
},
"remediation": null,
"durationMs": 2232
},
"runtime.provenance": {
"id": "runtime.provenance",
"category": "runtime",
"status": "ok",
"summary": "running brew on macos-aarch64",
"details": {
"commit": "unknown",
"current executable": "/opt/homebrew/bin/codex",
"install method": "brew",
"platform": "macos-aarch64",
"version": "0.142.3"
},
"remediation": null,
"durationMs": 0
},
"runtime.search": {
"id": "runtime.search",
"category": "search",
"status": "ok",
"summary": "search is OK (system)",
"details": {
"search command": "rg",
"search command readiness": "ripgrep 15.1.0",
"search provider": "system"
},
"remediation": null,
"durationMs": 12
},
"sandbox.helpers": {
"id": "sandbox.helpers",
"category": "sandbox",
"status": "ok",
"summary": "sandbox configuration is readable",
"details": {
"approval policy": "OnRequest",
"codex-linux-sandbox helper": "none",
"execve wrapper helper": "/Users/jeiea/.codex/tmp/arg0/codex-arg0Qn7P6A/codex-execve-wrapper",
"filesystem sandbox": "restricted",
"network sandbox": "restricted"
},
"remediation": null,
"durationMs": 0
},
"state.paths": {
"id": "state.paths",
"category": "state",
"status": "ok",
"summary": "state paths and databases are inspectable",
"details": {
"CODEX_HOME": "/Users/jeiea/.codex (dir)",
"active rollout files": "673 files, 409405877 total bytes, 608329 average bytes",
"archived rollout files": "4 files, 207563 total bytes, 51890 average bytes",
"goals DB": "/Users/jeiea/.codex/goals_1.sqlite (file)",
"goals DB integrity": "ok",
"log DB": "/Users/jeiea/.codex/logs_2.sqlite (file)",
"log DB integrity": "ok",
"log dir": "/Users/jeiea/.codex/log (dir)",
"memories DB": "/Users/jeiea/.codex/memories_1.sqlite (file)",
"memories DB integrity": "ok",
"sqlite home": "/Users/jeiea/.codex (dir)",
"state DB": "/Users/jeiea/.codex/state_5.sqlite (file)",
"state DB integrity": "ok"
},
"remediation": null,
"durationMs": 819
},
"state.rollout_db_parity": {
"id": "state.rollout_db_parity",
"category": "threads",
"status": "warning",
"summary": "rollout files and state DB thread inventory differ",
"details": {
"default model provider": "openai",
"rollout DB active files": "673",
"rollout DB active rows": "673",
"rollout DB archive mismatches": "0",
"rollout DB archived files": "4",
"rollout DB archived rows": "4",
"rollout DB duplicate DB paths": "0",
"rollout DB duplicate rollout thread ids": "0",
"rollout DB malformed file names": "0",
"rollout DB missing active rows": "97",
"rollout DB missing active sample": [
"/Users/jeiea/.codex/sessions/2026/04/13/rollout-2026-04-13T18-21-10-019d8625-136f-7791-b17b-0090042341ea.jsonl",
"/Users/jeiea/.codex/sessions/2026/04/23/rollout-2026-04-23T15-28-46-019db906-d765-7bf2-b42f-2c5738690879.jsonl",
"/Users/jeiea/.codex/sessions/2026/04/23/rollout-2026-04-23T13-14-07-019db88b-8eee-71f0-af48-566054b6608e.jsonl",
"/Users/jeiea/.codex/sessions/2026/04/23/rollout-2026-04-23T15-14-39-019db8f9-e93b-7b62-8a5d-f4830aef4183.jsonl",
"/Users/jeiea/.codex/sessions/2026/04/23/rollout-2026-04-23T15-08-27-019db8f4-3c93-7251-9367-c51fee9ff988.jsonl"
],
"rollout DB missing archived rows": "4",
"rollout DB missing archived sample": [
"/Users/jeiea/.codex/archived_sessions/rollout-2026-04-09T14-12-07-019d70a7-a2ab-7d71-bc30-47f183eab8fd.jsonl",
"/Users/jeiea/.codex/archived_sessions/rollout-2026-04-09T13-55-36-019d7098-83c1-7303-868b-8b155b425139.jsonl",
"/Users/jeiea/.codex/archived_sessions/rollout-2026-04-08T18-36-59-019d6c73-c28b-7b91-a604-1ff4b3b64a46.jsonl",
"/Users/jeiea/.codex/archived_sessions/rollout-2026-04-06T13-24-15-019d6108-bc10-7983-ae54-c14c6874b259.jsonl"
],
"rollout DB model providers": "openai=677",
"rollout DB rows": "677",
"rollout DB scan cap reached": "false",
"rollout DB scan errors": "0",
"rollout DB sources": "cli=365, exec=171, subagent:thread_spawn=87, vscode=54",
"rollout DB stale row sample": [
"/Users/jeiea/.codex/sessions/2026/03/09/rollout-2026-03-09T12-34-33-019cd0a9-2c4b-7e61-b6ba-30726373a1fa.jsonl",
"/Users/jeiea/.codex/sessions/2026/03/09/rollout-2026-03-09T13-18-41-019cd0d1-9414-7e52-a904-593af7393a40.jsonl",
"/Users/jeiea/.codex/sessions/2026/03/09/rollout-2026-03-09T14-00-14-019cd0f7-9e4c-7b32-ba06-a018b36c2401.jsonl",
"/Users/jeiea/.codex/sessions/2026/03/10/rollout-2026-03-10T13-40-45-019cd60c-22e2-76d3-89d8-9a69161e05e3.jsonl",
"/Users/jeiea/.codex/sessions/2026/03/10/rollout-2026-03-10T16-48-35-019cd6b8-18f4-7cb3-b525-c29c638f47ec.jsonl"
],
"rollout DB stale rows": "101"
},
"issues": [
{
"severity": "warning",
"cause": "rollout files are missing from the state DB",
"measured": "97 active, 4 archived",
"expected": "every rollout file has a matching threads row",
"remedy": null,
"fields": []
},
{
"severity": "warning",
"cause": "state DB rows point at missing or unusable rollout files",
"measured": "101 stale rows",
"expected": "every state DB rollout path is a file on disk",
"remedy": null,
"fields": []
}
],
"remediation": null,
"durationMs": 2758
},
"system.environment": {
"id": "system.environment",
"category": "system",
"status": "ok",
"summary": "OS language ko-KR",
"details": {
"EDITOR": "set",
"LANG": "en_US.UTF-8",
"LESS": "set",
"PAGER": "set",
"VISUAL": "not set",
"os": "Mac OS 26.5.1 [64-bit]",
"os language": "ko-KR",
"os type": "Mac OS",
"os version": "26.5.1"
},
"remediation": null,
"durationMs": 5
},
"terminal.env": {
"id": "terminal.env",
"category": "terminal",
"status": "fail",
"summary": "TERMINFO unreadable - terminal capabilities are unknown",
"details": {
"COLORTERM": "truecolor",
"TERMINFO_DIRS entry": [
"/etc/profiles/per-user/jeiea/share/terminfo (dir)",
"/Users/jeiea/.nix-profile/share/terminfo (missing)",
"/etc/profiles/per-user/jeiea/share/terminfo (dir)",
"/run/current-system/sw/share/terminfo (dir)",
"/nix/var/nix/profiles/default/share/terminfo (missing)",
"/usr/share/terminfo (dir)",
"/usr/share/terminfo (dir)"
],
"TERM_PROGRAM": "vscode",
"color output": "disabled (stdout is not a terminal)",
"effective locale": "en_US.UTF-8",
"stderr is terminal": "true",
"stdin is terminal": "true",
"stdout is terminal": "false",
"terminal": "VS Code",
"terminal size": "152x16",
"terminal version": "1.125.1"
},
"issues": [
{
"severity": "fail",
"cause": "TERMINFO unreadable - terminal capabilities are unknown",
"measured": null,
"expected": "readable terminfo file or directory",
"remedy": "check that $TERMINFO points to a readable directory",
"fields": [
"TERMINFO",
"TERMINFO_DIRS entry"
]
},
{
"severity": "warning",
"cause": "height 16 rows - content may scroll off (recommended >=24)",
"measured": "152 x 16",
"expected": ">= 24 rows",
"remedy": "resize the window to at least 24 rows",
"fields": [
"terminal size"
]
}
],
"remediation": null,
"durationMs": 0
},
"terminal.title": {
"id": "terminal.title",
"category": "title",
"status": "ok",
"summary": "terminal title default",
"details": {
"terminal title activity": "true",
"terminal title items": "activity, project-name",
"terminal title project source": "git repo root",
"terminal title project value": "vestway_app",
"terminal title source": "default"
},
"remediation": null,
"durationMs": 0
},
"updates.status": {
"id": "updates.status",
"category": "updates",
"status": "ok",
"summary": "update configuration is locally consistent",
"details": {
"cached latest version": "0.142.3",
"check for update on startup": "true",
"dismissed version": "0.134.0",
"last checked at": "2026-06-29T01:08:28.292454Z",
"latest version": "0.142.4",
"latest version status": "newer version is available",
"update action": "brew upgrade --cask codex",
"version cache": "/Users/jeiea/.codex/version.json"
},
"remediation": null,
"durationMs": 1210
}
}
}
</p>
</details>
What issue are you seeing?
When resuming a Codex session inside Zellij, the normal rich conversation view can stop before the actual end of the conversation. The missing tail is still visible in the Ctrl+T transcript view.
In the affected session, long URL-only history lines appear shortly before the missing tail. Raw output mode / raw reflow makes the tail visible again, which suggests the issue is in rich history replay rather than the stored transcript.
What steps can reproduce the bug?
- Start Zellij.
- Run Codex inside a Zellij pane.
- Resume session containing long URL-only web/search result lines.
- Open the normal conversation view.
- Compare the visible end of the conversation with Ctrl+T transcript.
Observed: Ctrl+T transcript shows the actual tail, but the normal rich conversation view does not.
What is the expected behavior?
The normal rich conversation view should show the same final conversation tail as the Ctrl+T transcript view when resuming inside Zellij.
Additional information
Related broader Zellij scrollback/history issues: #2558, #16578, #22214, #23651.
This appears narrower than the previous general Zellij scrollback issues: rich mode keeps long URL-only lines unwrapped for clickable URL detection, but Zellij can mishandle the resulting soft-wrapped continuation rows during history insertion. Routing those batches through the existing Zellij raw insertion path fixes the local repro.
I confirmed that the issue was resolved in this commit: https://github.com/jeiea/codex/tree/fix/zellij-rich-url-raw-insert
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Code-path triage from current
main(80f54d1): this is plausibly in the special Zellij/raw scrollback path, not generic markdown rendering.Relevant paths:
codex-rs/tui/src/insert_history.rshas a dedicatedInsertHistoryMode::ZellijRawbecause Zellij does not constrain soft-wrapped continuation rows to Codex's scroll region.line_contains_url_like,line_has_mixed_url_and_non_url_tokens,plain_hyperlink_lines, etc.).Suggested regression shape:
The fix boundary should probably avoid changing normal terminal mode. This looks like it should be scoped to Zellij/raw mode and URL-only wrapping policy.
I reproduced this on Zellij 0.44.3 in an isolated 20x8 pane and traced it to soft-wrapped continuation rows escaping Codex's bounded DECSTBM scroll region during rich-history replay.
With rows 1-6 used as the scroll region and rows 7-8 reserved for the viewport, the bounded path drops the URL tail and moves
FINAL ANSWER CURRENTinto the viewport. The existing raw Zellij path preserves both above the reserved rows. This matches the terminal-side mechanism addressed by zellij-org/zellij#5357, which is still unmerged and unreleased.I have a reviewed two-commit patch ready:
Focused checks pass, formatting and snapshots are clean, and the unrelated full-suite failures reproduce unchanged on a clean baseline.
Could a Codex maintainer confirm this approach and explicitly invite a PR under the contribution policy?
Prepared branch for maintainer review (no PR opened): https://github.com/Stranmor/codex/tree/fix/zellij-rich-history-tail (head
b0efdb535df99bb09ca208e9734649ad287ada81).Close this because https://github.com/zellij-org/zellij/pull/5357 fixes this.