What version of Codex CLI is running?
v0.117.0
What subscription do you have?
Which model were you using?
What platform is your computer?
Windows 11
What terminal emulator and version are you using (if applicable)?
What issue are you seeing?
Crashing Codex when resuming the same thread
What steps can reproduce the bug?
Write "hi", then 2) /resume, and 3) click enter as that entry should be the "hi" thread.
Or now 1) /resume, and 2) click enter as that entry should be the "hi" thread, then 3) /resume, and 4) click enter as that entry should be the "hi" thread.
What is the expected behavior?
No crash.
Additional information
First "hi" thread resume looks like:
<before-resume-omitted-for-brevity>
2026-03-29T00:52:14.282913Z INFO codex_core::plugins::manager: starting remote plugin sync
2026-03-29T00:52:14.356214Z WARN codex_core::plugins::manager: failed to warm featured plugin ids cache error=remote plugin sync request to https://chatgpt.com/backend-api/plugins/featured failed with status 403 Forbidden: <html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style global>body{font-family:Arial,Helvetica,sans-serif}.container{align-items:center;display:flex;flex-direction:column;gap:2rem;height:100%;justify-content:center;width:100%}@keyframes enlarge-appear{0%{opacity:0;transform:scale(75%) rotate(-90deg)}to{opacity:1;transform:scale(100%) rotate(0deg)}}.logo{color:#8e8ea0}.scale-appear{animation:enlarge-appear .4s ease-out}@media (min-width:768px){.scale-appear{height:48px;width:48px}}.data:empty{display:none}.data{border-radius:5px;color:#8e8ea0;text-align:center}@media (prefers-color-scheme:dark){body{background-color:#343541}.logo{color:#acacbe}}</style>
<meta http-equiv="refresh" content="360"></head>
<body>
<div class="container">
<div class="logo">
<svg
width="41"
height="41"
viewBox="0 0 41 41"
fill="none"
xmlns="http://www.w3.org/2000/svg"
strokeWidth="2"
class="scale-appear"
>
<path
d="<omitted-for-brevity>"
fill="currentColor"
/>
</svg>
</div>
<div class="data"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt = {cvId: '3',cZone: 'chatgpt.com',cType: 'managed',cRay: '<omitted-for-brevity>',cH: '<omitted-for-brevity>',cUPMDTk:"/backend-api/plugins/featured?platform=codex&__cf_chl_tk=<omitted-for-brevity>",cFPWv: 'g',cITimeS: '1774745534',cTplC:1,cTplO:0,cTplV:5,cTplB: '0',fa:"/backend-api/plugins/featured?platform=codex&__cf_chl_f_tk=<omitted-for-brevity>",md: '<omitted-for-brevity>',mdrd: 'DkG.<omitted-for-brevity>',};var a = document.createElement('script');a.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=<omitted-for-brevity>';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null,"/backend-api/plugins/featured?platform=codex&__cf_chl_rt_tk=<omitted-for-brevity>"+ window._cf_chl_opt.cOgUHash);a.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(a);}());</script></div>
</div>
</body>
</html>
2026-03-29T00:52:14.362964Z WARN codex_core::plugins::startup_sync: startup remote plugin sync failed; will retry on next app-server start error=remote plugin sync request to https://chatgpt.com/backend-api/plugins/list failed with status 403 Forbidden: <html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style global>body{font-family:Arial,Helvetica,sans-serif}.container{align-items:center;display:flex;flex-direction:column;gap:2rem;height:100%;justify-content:center;width:100%}@keyframes enlarge-appear{0%{opacity:0;transform:scale(75%) rotate(-90deg)}to{opacity:1;transform:scale(100%) rotate(0deg)}}.logo{color:#8e8ea0}.scale-appear{animation:enlarge-appear .4s ease-out}@media (min-width:768px){.scale-appear{height:48px;width:48px}}.data:empty{display:none}.data{border-radius:5px;color:#8e8ea0;text-align:center}@media (prefers-color-scheme:dark){body{background-color:#343541}.logo{color:#acacbe}}</style>
<meta http-equiv="refresh" content="360"></head>
<body>
<div class="container">
<div class="logo">
<svg
width="41"
height="41"
viewBox="0 0 41 41"
fill="none"
xmlns="http://www.w3.org/2000/svg"
strokeWidth="2"
class="scale-appear"
>
<path
d="<omitted-for-brevity>"
fill="currentColor"
/>
</svg>
</div>
<div class="data"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt = {cvId: '3',cZone: 'chatgpt.com',cType: 'managed',cRay: '<omitted-for-brevity>',cH: '<omitted-for-brevity>',cUPMDTk:"/backend-api/plugins/list?__cf_chl_tk=<omitted-for-brevity>",cFPWv: 'g',cITimeS: '1774745534',cTplC:1,cTplO:0,cTplV:5,cTplB: '0',fa:"/backend-api/plugins/list?<omitted-for-brevity>",md: '<omitted-for-brevity>',mdrd: '<omitted-for-brevity>',};var a = document.createElement('script');a.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=<omitted-for-brevity>';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null,"/backend-api/plugins/list?__cf_chl_rt_tk=<omitted-for-brevity>"+ window._cf_chl_opt.cOgUHash);a.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(a);}());</script></div>
</div>
</body>
</html>
2026-03-29T00:52:15.744067Z INFO thread_spawn{otel.name="thread_spawn"}: codex_core::codex: new
2026-03-29T00:52:15.744404Z INFO thread_spawn{otel.name="thread_spawn"}:load: codex_core::exec_policy: new
2026-03-29T00:52:15.744526Z INFO thread_spawn{otel.name="thread_spawn"}:load: codex_core::exec_policy: close time.busy=35.6µs time.idle=86.3µs
2026-03-29T00:52:15.744536Z INFO thread_spawn{otel.name="thread_spawn"}:list_models{refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: new
2026-03-29T00:52:15.744544Z INFO thread_spawn{otel.name="thread_spawn"}:list_models{refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: models cache: evaluating cache eligibility client_version="0.117.0"
2026-03-29T00:52:15.744553Z INFO thread_spawn{otel.name="thread_spawn"}:list_models{refresh_strategy=online_if_uncached}: codex_core::models_manager::cache: models cache: attempting load_fresh cache_path=C:\Users\a.user\.codex\models_cache.json expected_version="0.117.0"
2026-03-29T00:52:15.745148Z INFO thread_spawn{otel.name="thread_spawn"}:list_models{refresh_strategy=online_if_uncached}: codex_core::models_manager::cache: models cache: loaded cache file cache_path=C:\Users\a.user\.codex\models_cache.json cached_version=Some("0.117.0") fetched_at=2026-03-29 00:50:51.798548200 UTC
2026-03-29T00:52:15.745223Z INFO thread_spawn{otel.name="thread_spawn"}:list_models{refresh_strategy=online_if_uncached}: codex_core::models_manager::cache: models cache: cache hit cache_path=C:\Users\a.user\.codex\models_cache.json cache_ttl_secs=300
2026-03-29T00:52:15.745572Z INFO thread_spawn{otel.name="thread_spawn"}:list_models{refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: models cache: cache entry applied models_count=13 etag=Some("W/\"33512df94330178e71e5a938af661ca2\"")
2026-03-29T00:52:15.745604Z INFO thread_spawn{otel.name="thread_spawn"}:list_models{refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: models cache: using cached models for OnlineIfUncached
2026-03-29T00:52:15.745660Z INFO thread_spawn{otel.name="thread_spawn"}:list_models{refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: close time.busy=928µs time.idle=195µs
2026-03-29T00:52:15.745675Z INFO thread_spawn{otel.name="thread_spawn"}:get_default_model{model.provided=false refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: new
2026-03-29T00:52:15.745681Z INFO thread_spawn{otel.name="thread_spawn"}:get_default_model{model.provided=false refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: models cache: evaluating cache eligibility client_version="0.117.0"
2026-03-29T00:52:15.745689Z INFO thread_spawn{otel.name="thread_spawn"}:get_default_model{model.provided=false refresh_strategy=online_if_uncached}: codex_core::models_manager::cache: models cache: attempting load_fresh cache_path=C:\Users\a.user\.codex\models_cache.json expected_version="0.117.0"
2026-03-29T00:52:15.746049Z INFO thread_spawn{otel.name="thread_spawn"}:get_default_model{model.provided=false refresh_strategy=online_if_uncached}: codex_core::models_manager::cache: models cache: loaded cache file cache_path=C:\Users\a.user\.codex\models_cache.json cached_version=Some("0.117.0") fetched_at=2026-03-29 00:50:51.798548200 UTC
2026-03-29T00:52:15.746067Z INFO thread_spawn{otel.name="thread_spawn"}:get_default_model{model.provided=false refresh_strategy=online_if_uncached}: codex_core::models_manager::cache: models cache: cache hit cache_path=C:\Users\a.user\.codex\models_cache.json cache_ttl_secs=300
2026-03-29T00:52:15.746287Z INFO thread_spawn{otel.name="thread_spawn"}:get_default_model{model.provided=false refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: models cache: cache entry applied models_count=13 etag=Some("W/\"33512df94330178e71e5a938af661ca2\"")
2026-03-29T00:52:15.746309Z INFO thread_spawn{otel.name="thread_spawn"}:get_default_model{model.provided=false refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: models cache: using cached models for OnlineIfUncached
2026-03-29T00:52:15.746356Z INFO thread_spawn{otel.name="thread_spawn"}:get_default_model{model.provided=false refresh_strategy=online_if_uncached}: codex_core::models_manager::manager: close time.busy=514µs time.idle=168µs
2026-03-29T00:52:15.746365Z INFO thread_spawn{otel.name="thread_spawn"}:get_model_info{model="gpt-5.4"}: codex_core::models_manager::manager: new
2026-03-29T00:52:15.746389Z INFO thread_spawn{otel.name="thread_spawn"}:get_model_info{model="gpt-5.4"}: codex_core::models_manager::manager: close time.busy=21.3µs time.idle=3.00µs
2026-03-29T00:52:15.749357Z INFO thread_spawn{otel.name="thread_spawn"}:session_init: codex_core::codex: new
2026-03-29T00:52:15.749400Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.rollout{otel.name="session_init.rollout" session_init.ephemeral=false}: codex_core::codex: new
2026-03-29T00:52:15.749404Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.history_metadata{otel.name="session_init.history_metadata" session_init.is_subagent=false}: codex_core::codex: new
2026-03-29T00:52:15.749407Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.auth_mcp{otel.name="session_init.auth_mcp"}: codex_core::codex: new
2026-03-29T00:52:15.749469Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.auth_mcp{otel.name="session_init.auth_mcp"}: codex_core::codex: close time.busy=32.9µs time.idle=28.5µs
2026-03-29T00:52:15.749594Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.history_metadata{otel.name="session_init.history_metadata" session_init.is_subagent=false}: codex_core::codex: close time.busy=29.7µs time.idle=160µs
2026-03-29T00:52:15.751942Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.rollout{otel.name="session_init.rollout" session_init.ephemeral=false}: codex_core::codex: close time.busy=1.32ms time.idle=1.22ms
2026-03-29T00:52:15.768566Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:shell_snapshot{thread_id=019d3712-4891-7741-a263-7991faf9d9ce}: codex_core::shell_snapshot: new
2026-03-29T00:52:15.768587Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.thread_name_lookup{otel.name="session_init.thread_name_lookup"}: codex_core::codex: new
2026-03-29T00:52:15.768624Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.thread_name_lookup{otel.name="session_init.thread_name_lookup"}: codex_core::codex: close time.busy=33.0µs time.idle=3.90µs
2026-03-29T00:52:15.768703Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.mcp_manager_init{otel.name="session_init.mcp_manager_init" session_init.enabled_mcp_server_count=1 session_init.required_mcp_server_count=0}: codex_core::codex: new
2026-03-29T00:52:15.768702Z WARN thread_spawn{otel.name="thread_spawn"}:session_init:shell_snapshot{thread_id=019d3712-4891-7741-a263-7991faf9d9ce}: codex_core::shell_snapshot: Failed to create shell snapshot for powershell: Shell snapshot not supported yet for PowerShell
2026-03-29T00:52:15.768742Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:shell_snapshot{thread_id=019d3712-4891-7741-a263-7991faf9d9ce}: codex_core::shell_snapshot: close time.busy=60.4µs time.idle=116µs
2026-03-29T00:52:15.769991Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:session_init.mcp_manager_init{otel.name="session_init.mcp_manager_init" session_init.enabled_mcp_server_count=1 session_init.required_mcp_server_count=0}: codex_core::codex: close time.busy=1.28ms time.idle=6.90µs
2026-03-29T00:52:15.770027Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:get_model_info{model="gpt-5.4"}: codex_core::models_manager::manager: new
2026-03-29T00:52:15.770138Z INFO thread_spawn{otel.name="thread_spawn"}:session_init:get_model_info{model="gpt-5.4"}: codex_core::models_manager::manager: close time.busy=109µs time.idle=3.00µs
2026-03-29T00:52:15.770745Z INFO get_model_info{model="gpt-5.4"}: codex_core::models_manager::manager: new
2026-03-29T00:52:15.770813Z INFO get_model_info{model="gpt-5.4"}: codex_core::models_manager::manager: close time.busy=61.4µs time.idle=7.10µs
2026-03-29T00:52:15.770871Z INFO thread_spawn{otel.name="thread_spawn"}:session_init: codex_core::codex: close time.busy=19.4ms time.idle=2.13ms
2026-03-29T00:52:15.770889Z INFO thread_spawn{otel.name="thread_spawn"}: codex_core::codex: close time.busy=23.0ms time.idle=3.85ms
2026-03-29T00:52:15.770938Z INFO session_loop{thread_id=019d3712-4891-7741-a263-7991faf9d9ce}: codex_core::codex: new
2026-03-29T00:52:15.772708Z INFO session_loop{thread_id=019d3713-9692-7311-a7b3-7aef14554984}:submission_dispatch{otel.name="op.dispatch.shutdown" submission.id="019d3713-c51c-7671-a590-e8c5e2cdcf38" codex.op="shutdown"}: codex_core::codex: new
2026-03-29T00:52:15.772755Z INFO session_loop{thread_id=019d3713-9692-7311-a7b3-7aef14554984}:submission_dispatch{otel.name="op.dispatch.shutdown" submission.id="019d3713-c51c-7671-a590-e8c5e2cdcf38" codex.op="shutdown"}: codex_core::codex::handlers: Shutting down Codex instance
2026-03-29T00:52:15.772847Z INFO session_loop{thread_id=019d3713-9692-7311-a7b3-7aef14554984}:submission_dispatch{otel.name="op.dispatch.shutdown" submission.id="019d3713-c51c-7671-a590-e8c5e2cdcf38" codex.op="shutdown"}: codex_core::codex: close time.busy=127µs time.idle=12.4µs
2026-03-29T00:52:15.772858Z INFO session_loop{thread_id=019d3713-9692-7311-a7b3-7aef14554984}: codex_core::codex: close time.busy=189µs time.idle=11.9s
2026-03-29T00:52:15.894116Z INFO model_client.stream_responses_websocket{model=gpt-5.4 wire_api=responses transport="responses_websocket" api.path="responses" turn.has_metadata_header=true websocket.warmup=true}: codex_core::client: new
2026-03-29T00:52:15.895181Z INFO model_client.stream_responses_websocket{model=gpt-5.4 wire_api=responses transport="responses_websocket" api.path="responses" turn.has_metadata_header=true websocket.warmup=true}:model_client.websocket_connection{provider=OpenAI wire_api=responses transport="responses_websocket" api.path="responses" turn.has_metadata_header=true}: codex_core::client: new
2026-03-29T00:52:16.146376Z INFO model_client.stream_responses_websocket{model=gpt-5.4 wire_api=responses transport="responses_websocket" api.path="responses" turn.has_metadata_header=true websocket.warmup=true}:model_client.websocket_connection{provider=OpenAI wire_api=responses transport="responses_websocket" api.path="responses" turn.has_metadata_header=true}: codex_core::client: close time.busy=6.62ms time.idle=245ms
2026-03-29T00:52:16.646222Z INFO model_client.stream_responses_websocket{model=gpt-5.4 wire_api=responses transport="responses_websocket" api.path="responses" turn.has_metadata_header=true websocket.warmup=true}: codex_core::client: close time.busy=8.16ms time.idle=744ms
Second "hi" thread resume followed by immedate crash looks like:
<before-resume-omitted-for-brevity>
2026-03-29T00:52:28.258330Z INFO codex_core::plugins::manager: starting remote plugin sync
2026-03-29T00:52:28.414961Z WARN codex_core::plugins::startup_sync: startup remote plugin sync failed; will retry on next app-server start error=remote plugin sync request to https://chatgpt.com/backend-api/plugins/list failed with status 403 Forbidden: <html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style global>body{font-family:Arial,Helvetica,sans-serif}.container{align-items:center;display:flex;flex-direction:column;gap:2rem;height:100%;justify-content:center;width:100%}@keyframes enlarge-appear{0%{opacity:0;transform:scale(75%) rotate(-90deg)}to{opacity:1;transform:scale(100%) rotate(0deg)}}.logo{color:#8e8ea0}.scale-appear{animation:enlarge-appear .4s ease-out}@media (min-width:768px){.scale-appear{height:48px;width:48px}}.data:empty{display:none}.data{border-radius:5px;color:#8e8ea0;text-align:center}@media (prefers-color-scheme:dark){body{background-color:#343541}.logo{color:#acacbe}}</style>
<meta http-equiv="refresh" content="360"></head>
<body>
<div class="container">
<div class="logo">
<svg
width="41"
height="41"
viewBox="0 0 41 41"
fill="none"
xmlns="http://www.w3.org/2000/svg"
strokeWidth="2"
class="scale-appear"
>
<path
d="<omitted-for-brevity>"
fill="currentColor"
/>
</svg>
</div>
<div class="data"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt = {cvId: '3',cZone: 'chatgpt.com',cType: 'managed',cRay: '<omitted-for-brevity>',cH: '<omitted-for-brevity>',cUPMDTk:"/backend-api/plugins/list?__cf_chl_tk=<omitted-for-brevity>",cFPWv: 'g',cITimeS: '1774745548',cTplC:1,cTplO:0,cTplV:5,cTplB: '0',fa:"/backend-api/plugins/list?__cf_chl_f_tk=<omitted-for-brevity>",md: '<omitted-for-brevity>',mdrd: '<omitted-for-brevity>',};var a = document.createElement('script');a.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=<omitted-for-brevity>';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null,"/backend-api/plugins/list?__cf_chl_rt_tk=<omitted-for-brevity>"+ window._cf_chl_opt.cOgUHash);a.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(a);}());</script></div>
</div>
</body>
</html>
2026-03-29T00:52:28.416212Z WARN codex_core::plugins::manager: failed to warm featured plugin ids cache error=remote plugin sync request to https://chatgpt.com/backend-api/plugins/featured failed with status 403 Forbidden: <html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style global>body{font-family:Arial,Helvetica,sans-serif}.container{align-items:center;display:flex;flex-direction:column;gap:2rem;height:100%;justify-content:center;width:100%}@keyframes enlarge-appear{0%{opacity:0;transform:scale(75%) rotate(-90deg)}to{opacity:1;transform:scale(100%) rotate(0deg)}}.logo{color:#8e8ea0}.scale-appear{animation:enlarge-appear .4s ease-out}@media (min-width:768px){.scale-appear{height:48px;width:48px}}.data:empty{display:none}.data{border-radius:5px;color:#8e8ea0;text-align:center}@media (prefers-color-scheme:dark){body{background-color:#343541}.logo{color:#acacbe}}</style>
<meta http-equiv="refresh" content="360"></head>
<body>
<div class="container">
<div class="logo">
<svg
width="41"
height="41"
viewBox="0 0 41 41"
fill="none"
xmlns="http://www.w3.org/2000/svg"
strokeWidth="2"
class="scale-appear"
>
<path
d="<omitted-for-brevity>"
fill="currentColor"
/>
</svg>
</div>
<div class="data"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt = {cvId: '3',cZone: 'chatgpt.com',cType: 'managed',cRay: '<omitted-for-brevity>',cH: '<omitted-for-brevity>',cUPMDTk:"/backend-api/plugins/featured?platform=codex&__cf_chl_tk=<omitted-for-brevity>",cFPWv: 'g',cITimeS: '1774745548',cTplC:1,cTplO:0,cTplV:5,cTplB: '0',fa:"/backend-api/plugins/featured?platform=codex&__cf_chl_f_tk=<omitted-for-brevity>",md: '<omitted-for-brevity>',mdrd: '<omitted-for-brevity>',};var a = document.createElement('script');a.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=<omitted-for-brevity>';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null,"/backend-api/plugins/featured?platform=codex&__cf_chl_rt_tk=<omitted-for-brevity>"+ window._cf_chl_opt.cOgUHash);a.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(a);}());</script></div>
</div>
</body>
</html>
2026-03-29T00:52:29.531862Z INFO session_loop{thread_id=019d3712-4891-7741-a263-7991faf9d9ce}:submission_dispatch{otel.name="op.dispatch.shutdown" submission.id="019d3713-fadb-73b1-a349-f8d3ec487da4" codex.op="shutdown"}: codex_core::codex: new
2026-03-29T00:52:29.531877Z INFO session_loop{thread_id=019d3712-4891-7741-a263-7991faf9d9ce}:submission_dispatch{otel.name="op.dispatch.shutdown" submission.id="019d3713-fadb-73b1-a349-f8d3ec487da4" codex.op="shutdown"}: codex_core::codex::handlers: Shutting down Codex instance
2026-03-29T00:52:29.531924Z INFO session_loop{thread_id=019d3712-4891-7741-a263-7991faf9d9ce}:submission_dispatch{otel.name="op.dispatch.shutdown" submission.id="019d3713-fadb-73b1-a349-f8d3ec487da4" codex.op="shutdown"}: codex_core::codex: close time.busy=48.9µs time.idle=14.1µs
2026-03-29T00:52:29.531932Z INFO session_loop{thread_id=019d3712-4891-7741-a263-7991faf9d9ce}: codex_core::codex: close time.busy=78.0µs time.idle=13.8s
What version of Codex CLI is running?
v0.117.0
What subscription do you have?
Which model were you using?
What platform is your computer?
Windows 11
What terminal emulator and version are you using (if applicable)?
What issue are you seeing?
Crashing Codex when resuming the same thread
What steps can reproduce the bug?
Write "hi", then 2)
/resume, and 3) click enter as that entry should be the "hi" thread.Or now 1)
/resume, and 2) click enter as that entry should be the "hi" thread, then 3)/resume, and 4) click enter as that entry should be the "hi" thread.What is the expected behavior?
No crash.
Additional information
First "hi" thread resume looks like:
Second "hi" thread resume followed by immedate crash looks like: