Skip to content

[Desktop 26.721.4979.0] list_threads schema advertises query but runtime rejects it as unrecognized #35377

Description

@aidawilliam41-ops

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:

  1. query is accepted and filters the result as documented; or
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appapp-serverIssues involving app server protocol or interfacesbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions