Client or integration
Codex App
Area
Tools / MCP / web search
Summary
On current origin/dev (bf8bcfd3c8, npm @bitkyc08/opencodex@2.31.0), Grok-routed Codex Desktop still rejects the host wait tool before it runs:
failed to parse function arguments: invalid type: floating point `120000.0`, expected u64 at line 1 column 40
failed to parse function arguments: invalid type: floating point `8000.0`, expected usize at line 1 column 35
The model intended integers. Codex advertises both fields as JSON Schema number, then deserializes them as Rust u64 / usize. OpenCodex already repairs this class of argument in src/lib/tool-argument-integers.ts (#1611, #2316), but the #2316 allowlist is still only timeout_ms. The file even says Cursor/Codex yield_time_ms is declared number and is not included until a live rejection exists. This session is that rejection.
Expected: an integral float in a Codex-native integer field is rewritten to an integer, wait continues the exec cell, and Aside/long-running host work can be polled. A genuine fraction such as 1.5 must still fail.
This is not an Aside bug. Aside CLI updated and executed; the host wait poll never attached because Codex rejected the function-call arguments.
Reproduction
-
Route Codex App / Codex Desktop through OpenCodex with default provider xAI Grok (xai/grok-4.6 in this session).
-
Start a long-running host command through code-mode exec / exec_command so it yields with a cell id, e.g. aside exec "...".
-
Call the Codex Desktop host tool wait with integer arguments:
{"cell_id":"29","yield_time_ms":120000}
{"cell_id":"30","max_tokens":8000}
Grok serializes those fields as 120000.0 / 8000.0.
-
Observe the parse rejections above. wait does not run. The underlying process (Aside, in this case) keeps running independently.
Live schema advertised to the model in this session (both integer-runtime fields are JSON Schema number):
{
"name": "wait",
"parameters": {
"type": "object",
"required": ["cell_id"],
"properties": {
"cell_id": { "type": "string" },
"yield_time_ms": { "type": "number" },
"max_tokens": { "type": "number" },
"terminate": { "type": "boolean" }
}
}
}
Current allowlist in src/lib/tool-argument-integers.ts:
const U64_NUMBER_FIELDS = new Set(["timeout_ms"]);
Comment immediately above that set says yield_time_ms is excluded until a reproduction is captured. Add yield_time_ms and max_tokens only if they remain Codex-native integer fields (u64 / usize) with this same hard reject.
Related: #1611, #2316. #2316 fixed multi_agent_v1__wait_agent.timeout_ms; this is a different host tool (wait) with the same serializer/runtime mismatch.
Version
npm @bitkyc08/opencodex@2.31.0 / origin/dev bf8bcfd3c8a2cb1a352d4419351f634c3d3e75b4
Local checkout package.json still prints 2.27.0; that file is stale relative to the published tag. The live reject is from Codex Desktop routed through OpenCodex, not from Aside.
Operating system
macOS 27.0 (26A5378n)
Provider and model
xai / grok-4.6 (OpenCodex default provider; Codex App / Codex Desktop host tool surface)
Logs or error output
failed to parse function arguments: invalid type: floating point `120000.0`, expected u64 at line 1 column 40
failed to parse function arguments: invalid type: floating point `8000.0`, expected usize at line 1 column 35
Independent evidence that Aside itself was healthy while wait was rejected:
aside --update installed 1.26.810.1915
aside exec opened https://arca.live/b/stock/180813968?p=1 and read the page
- process
aside exec ... remained running after the wait parse failures
- session dir
~/.aside/u/0/sessions/2026-08-23_7We16YtbYllIs0tv kept growing messages.jsonl
Checks
Client or integration
Codex App
Area
Tools / MCP / web search
Summary
On current
origin/dev(bf8bcfd3c8, npm@bitkyc08/opencodex@2.31.0), Grok-routed Codex Desktop still rejects the hostwaittool before it runs:The model intended integers. Codex advertises both fields as JSON Schema
number, then deserializes them as Rustu64/usize. OpenCodex already repairs this class of argument insrc/lib/tool-argument-integers.ts(#1611, #2316), but the #2316 allowlist is still onlytimeout_ms. The file even says Cursor/Codexyield_time_msis declarednumberand is not included until a live rejection exists. This session is that rejection.Expected: an integral float in a Codex-native integer field is rewritten to an integer,
waitcontinues the exec cell, and Aside/long-running host work can be polled. A genuine fraction such as1.5must still fail.This is not an Aside bug. Aside CLI updated and executed; the host
waitpoll never attached because Codex rejected the function-call arguments.Reproduction
Route Codex App / Codex Desktop through OpenCodex with default provider xAI Grok (
xai/grok-4.6in this session).Start a long-running host command through code-mode
exec/exec_commandso it yields with a cell id, e.g.aside exec "...".Call the Codex Desktop host tool
waitwith integer arguments:{"cell_id":"29","yield_time_ms":120000} {"cell_id":"30","max_tokens":8000}Grok serializes those fields as
120000.0/8000.0.Observe the parse rejections above.
waitdoes not run. The underlying process (Aside, in this case) keeps running independently.Live schema advertised to the model in this session (both integer-runtime fields are JSON Schema
number):{ "name": "wait", "parameters": { "type": "object", "required": ["cell_id"], "properties": { "cell_id": { "type": "string" }, "yield_time_ms": { "type": "number" }, "max_tokens": { "type": "number" }, "terminate": { "type": "boolean" } } } }Current allowlist in
src/lib/tool-argument-integers.ts:Comment immediately above that set says
yield_time_msis excluded until a reproduction is captured. Addyield_time_msandmax_tokensonly if they remain Codex-native integer fields (u64 / usize) with this same hard reject.Related: #1611, #2316. #2316 fixed
multi_agent_v1__wait_agent.timeout_ms; this is a different host tool (wait) with the same serializer/runtime mismatch.Version
npm
@bitkyc08/opencodex@2.31.0/origin/devbf8bcfd3c8a2cb1a352d4419351f634c3d3e75b4Local checkout
package.jsonstill prints2.27.0; that file is stale relative to the published tag. The live reject is from Codex Desktop routed through OpenCodex, not from Aside.Operating system
macOS 27.0 (26A5378n)
Provider and model
xai / grok-4.6 (OpenCodex default provider; Codex App / Codex Desktop host tool surface)
Logs or error output
Independent evidence that Aside itself was healthy while
waitwas rejected:aside --updateinstalled1.26.810.1915aside execopenedhttps://arca.live/b/stock/180813968?p=1and read the pageaside exec ...remained running after the wait parse failures~/.aside/u/0/sessions/2026-08-23_7We16YtbYllIs0tvkept growingmessages.jsonlChecks