Invalid URL (POST /v1/engines/codex-mini-latest/completions)
What version of Codex is running?
0.1.2505172129
Which model were you using?
codex-mini-latest
What platform is your computer?
wsl2 (Linux 5.15.167.4-microsoft-standard-WSL2 x86_64 x86_64)
What steps can reproduce the bug?
No idea to be honest, it occurs randomly. My prompt was this:
Great! Could you do a detailed run over the codebase to scan for any potential security issues while I test everything?
What is the expected behavior?
Codex continues working
What do you see instead?
file:///home/luca/.nvm/versions/node/v24.0.2/lib/node_modules/@openai/codex/dist/cli.js:582,"\r"]);Gh.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function bVe(e,t){for(let a=t??0;a<e.length;a++){if(e[a]===10)return{preceding:a,index:a+1,carriage:!1};if(e[a]===13)return{preceding:a,index:a+1,carriage:!0}}return null}function qde(e){for(let n=0;n<e.length-1;n++){if(e[n]===10&&e[n+1]===10||e[n]===13&&e[n+1]===13)return n+2;if(e[n]===13&&e[n+1]===10&&n+3<e.length&&e[n+2]===13&&e[n+3]===10)return n+4}return-1}f();function zL(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let r=await t.read();return r?.done&&t.releaseLock(),r}catch(r){throw t.releaseLock(),r}},async return(){let r=t.cancel();return t.releaseLock(),await r,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}var ed=class e{constructor(t,r){this.iterator=t,this.controller=r}static fromSSEResponse(t,r){let n=!1;async function*a(){if(n)throw new Error("Cannot iterate over a consumed stream, use .tee() to split the stream.");n=!0;let i=!1;try{for await(let o of SVe(t,r))if(!i){if(o.data.startsWith("[DONE]")){i=!0;continue}if(o.event===null||o.event.startsWith("response.")||o.event.startsWith("transcript.")){let s;try{s=JSON.parse(o.data)}catch(u){throw console.error("Could not parse message into JSON:",o.data),console.error("From chunk:",o.raw),u}if(s&&s.error)throw new xi(void 0,s.error,void 0,qL(t.headers));yield s}else{let s;try{s=JSON.parse(o.data)}catch(u){throw console.error("Could not parse message into JSON:",o.data),console.error("From chunk:",o.raw),u}if(o.event=="error")throw new xi(void 0,s.error,s.message,void 0);yield{event:o.event,data:s}}}i=!0}catch(o){if(o instanceof Error&&o.name==="AbortError")return;throw o}finally{i||r.abort()}}return new e(a,r)}static fromReadableStream(t,r){let n=!1;async function*a(){let o=new Gh,s=zL(t);for await(let u of s)for(let p of o.decode(u))yield p;for(let u of o.flush())yield u}async function*i(){if(n)throw new Error("Cannot iterate over a consumed stream, use .tee() to split the stream.");n=!0;let o=!1;try{for await(let s of a())o||s&&(yield JSON.parse(s));o=!0}catch(s){if(s instanceof Error&&s.name==="AbortError")return;throw s}finally{o||r.abort()}}return new e(i,r)}[Symbol.asyncIterator](){return this.iterator()}tee(){let t=[],r=[],n=this.iterator(),a=i=>({next:()=>{if(i.length===0){let o=n.next();t.push(o),r.push(o)}return i.shift()}});return[new e(()=>a(t),this.controller),new e(()=>a(r),this.controller)]}toReadableStream(){let t=this,r,n=new TextEncoder;return new RB({async start(){r=t[Symbol.asyncIterator]()},async pull(a){try{let{value:i,done:o}=await r.next();if(o)return a.close();let s=n.encode(JSON.stringify(i)+
e [Error]: Invalid URL (POST /v1/engines/codex-mini-latest/completions)
at e.a [as iterator] (file:///home/luca/.nvm/versions/node/v24.0.2/lib/node_modules/@openai/codex/dist/cli.js:582:1514)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async ky.run (file:///home/luca/.nvm/versions/node/v24.0.2/lib/node_modules/@openai/codex/dist/cli.js:599:2785) {
status: undefined,
headers: undefined,
request_id: undefined,
error: {
type: 'invalid_request_error',
code: null,
message: 'Invalid URL (POST /v1/engines/codex-mini-latest/completions)',
param: null
},
code: null,
param: null,
type: 'invalid_request_error'
}
Node.js v2
Additional information
_No response_
2 Comments
This is happening intermittently a lot and crashing Codex. I assume the reason o4-mini was removed for this model (which I assume is an alias) is just putting CLI users on a weaker end-point that is now prone to overloading, as a way to save costs for their Codex on the website which has a high revenue scale.
Codex didn't need a fine-tune model anyhow, especially one adding watermarks to code and stuff in front-end that is unacceptable like "Powered by OpenAI Codex" which it most certainly is not, it's a simple front-end for an existing endpoint powered by something else entirely. What in tarnations? Lol
Thank you for the feedback. Please try again with the latest version of Codex CLI. If the issue persists, feel free to report it again.