Codex Desktop read_thread schema allows turnLimit, but values above 10 are rejected

Open 💬 0 comments Opened Jun 25, 2026 by alibrohde

What version of the Codex App are you using?

Codex Desktop: 26.616.81150
CFBundleVersion: 4306

What subscription do you have?

Pro

What platform is your computer?

macOS 15.6.1 build 24G90, arm64

What issue are you seeing?

The codex_app.read_thread tool schema exposes turnLimit as an optional integer but does not declare a maximum. Passing higher values causes the tool call to fail with a generic invalid-arguments error.

This can mislead agents into thinking a thread is unreadable or broken when the real issue is an undocumented parameter limit.

Steps to reproduce

Using a readable local thread id, the minimal call works:

{ "threadId": "019efcd1-0b32-7cd3-8dac-a687e65f1d8e" }

turnLimit: 10 also works:

{ "threadId": "019efcd1-0b32-7cd3-8dac-a687e65f1d8e", "turnLimit": 10 }

But turnLimit: 20 fails:

{ "threadId": "019efcd1-0b32-7cd3-8dac-a687e65f1d8e", "turnLimit": 20 }

Observed error:

read_thread received invalid arguments.

turnLimit: 30 also fails with the same error.

Expected behavior

Either:

  • the schema should declare the max allowed value, likely maximum: 10, or
  • the backend should accept larger turnLimit values, or
  • the error should state the allowed range.

Actual behavior

The backend rejects larger turnLimit values with a generic invalid-arguments message, while the exposed schema does not advertise the limit.

Workaround

Call read_thread with no turnLimit or with turnLimit <= 10, then paginate using the returned nextCursor.

Related context

This is not the same as a missing/corrupt thread. The same thread is readable with the minimal call and with cursor pagination. The failure is parameter validation.

View original on GitHub ↗