Environment
- Codex Desktop:
26.721.4979.0
- Bundled/configured CLI:
0.146.0-alpha.3.1
- Windows 11 25H2, build
26200.8037
Summary
The list_threads schema surfaced to the caller advertises an optional query field, but the runtime validator rejects that exact field as unrecognized.
Surfaced schema:
type list_threads = (_: { limit?: number, query?: string }) => any;
The tool description also said:
Use an optional query to find a specific thread before reading or steering it.
Exact sanitized call:
{"limit":20,"query":"<thread-title search>"}
Runtime rejection:
list_threads received invalid arguments: arguments: Unrecognized key: "query".
The occurrence was bounded between 2026-07-25 19:14:14.887 MSK and 19:16:25.125 MSK. The exact tool-call id and separate app-tool wrapper version were not surfaced.
Expected behavior
Either:
query is accepted and filters the result as documented; or
- the generated/surfaced schema and description do not advertise it.
Actual behavior and impact
The caller receives a valid-looking field that fails before thread listing begins. This adds a failed tool turn and can break agents or scheduled workflows that trust the surfaced schema.
The bounded workaround is to omit query, use the supported result limit, and filter returned tasks locally. That workaround does not resolve the schema/runtime contract mismatch.
Related issue
#35030 reports list_threads hanging in scheduled runs. It is related to the same tool surface but does not report this deterministic query schema/runtime mismatch.
Suggested fix
- Generate the surfaced schema from the same validator used at runtime.
- Add a parity test that submits every advertised optional field.
- If
query is intentionally unsupported, remove it from both the schema and description.
- Return a structured capability/version mismatch when a stale wrapper calls a newer validator.
No task titles, thread ids, usernames, local paths, credentials, or private logs are included.
Environment
26.721.4979.00.146.0-alpha.3.126200.8037Summary
The
list_threadsschema surfaced to the caller advertises an optionalqueryfield, but the runtime validator rejects that exact field as unrecognized.Surfaced schema:
The tool description also said:
Exact sanitized call:
{"limit":20,"query":"<thread-title search>"}Runtime rejection:
The occurrence was bounded between
2026-07-25 19:14:14.887 MSKand19:16:25.125 MSK. The exact tool-call id and separate app-tool wrapper version were not surfaced.Expected behavior
Either:
queryis accepted and filters the result as documented; orActual behavior and impact
The caller receives a valid-looking field that fails before thread listing begins. This adds a failed tool turn and can break agents or scheduled workflows that trust the surfaced schema.
The bounded workaround is to omit
query, use the supported result limit, and filter returned tasks locally. That workaround does not resolve the schema/runtime contract mismatch.Related issue
#35030 reports
list_threadshanging in scheduled runs. It is related to the same tool surface but does not report this deterministicqueryschema/runtime mismatch.Suggested fix
queryis intentionally unsupported, remove it from both the schema and description.No task titles, thread ids, usernames, local paths, credentials, or private logs are included.