From c75cb507f08502af9e28e3de399e89306f50a67f Mon Sep 17 00:00:00 2001 From: Connor Christie Date: Wed, 23 Apr 2025 15:21:00 -0700 Subject: [PATCH] bug: fix error catching when checking for updates (#597) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes https://github.com/openai/codex/issues/480 where the latest code was crashing when attempting to be run inside docker since the update checker attempts to reach out to `npm.antfu.dev` but that DNS is not allowed in the firewall rules. I believe the original code was attempting to catch and ignore any errors when checking for updates but was doing so incorrectly. If you use await on a promise, you have to use a standard try/catch instead of `Promise.catch` so this fixes that. ## Testing ### Before ``` $ scripts/run_in_container.sh "explain this project to me" 7d1aa845edf9a36fe4d5b331474b5cb8ba79537b682922b554ea677f14996c6b Resolving api.openai.com... Adding 162.159.140.245 for api.openai.com Adding 172.66.0.243 for api.openai.com Host network detected as: 172.17.0.0/24 Firewall configuration complete Verifying firewall rules... Firewall verification passed - unable to reach https://example.com as expected Firewall verification passed - able to reach https://api.openai.com as expected TypeError: fetch failed at node:internal/deps/undici/undici:13510:13 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async getLatestVersionBatch (file:///usr/local/share/npm-global/lib/node_modules/@openai/codex/dist/cli.js:132669:17) at async getLatestVersion (file:///usr/local/share/npm-global/lib/node_modules/@openai/codex/dist/cli.js:132674:19) at async getUpdateCheckInfo (file:///usr/local/share/npm-global/lib/node_modules/@openai/codex/dist/cli.js:132748:20) at async checkForUpdates (file:///usr/local/share/npm-global/lib/node_modules/@openai/codex/dist/cli.js:132772:23) at async file:///usr/local/share/npm-global/lib/node_modules/@openai/codex/dist/cli.js:142027:1 { [cause]: AggregateError [ECONNREFUSED]: at internalConnectMultiple (node:net:1122:18) at afterConnectMultiple (node:net:1689:7) { code: 'ECONNREFUSED', [errors]: [ [Error], [Error] ] } } ``` ### After ``` $ scripts/run_in_container.sh "explain this project to me" 91aa716e3d3f86c9cf6013dd567be31b2c44eb5d7ab184d55ef498731020bb8d Resolving api.openai.com... Adding 162.159.140.245 for api.openai.com Adding 172.66.0.243 for api.openai.com Host network detected as: 172.17.0.0/24 Firewall configuration complete Verifying firewall rules... Firewall verification passed - unable to reach https://example.com as expected Firewall verification passed - able to reach https://api.openai.com as expected ╭──────────────────────────────────────────────────────────────╮ │ ● OpenAI Codex (research preview) v0.1.2504221401 │ ╰──────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────╮ │ localhost session: 7c782f196ae04503866e39f071e26a69 │ │ ↳ model: o4-mini │ │ ↳ provider: openai │ │ ↳ approval: full-auto │ ╰──────────────────────────────────────────────────────────────╯ user explain this project to me ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │( ● ) 2s Thinking │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ send q or ctrl+c to exit | send "/clear" to reset | send "/help" for commands | press enter to send | shift+enter for new line — 100% context left ``` --- codex-cli/src/cli.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/codex-cli/src/cli.tsx b/codex-cli/src/cli.tsx index c0aa728f..1118bfe6 100644 --- a/codex-cli/src/cli.tsx +++ b/codex-cli/src/cli.tsx @@ -294,7 +294,11 @@ config = { // Check for updates after loading config. This is important because we write state file in // the config dir. -await checkForUpdates().catch(); +try { + await checkForUpdates(); +} catch { + // ignore +} // For --flex-mode, validate and exit if incorrect. if (cli.flags.flexMode) {