Skip to content

Codex Turn State Probe v0.5.2

Choose a tag to compare

@github-actions github-actions released this 20 Sep 14:59
· 6 commits to main since this release

Let an empty proxy pool mean "direct only", and stop hiding why a probe failed.

Fixed in v0.5.2

  • Probing no longer requires a proxy pool: with direct_probe: true and no proxies, the round now runs direct-only. Before this, an empty pool skipped probing entirely with at least one proxy is required for probing.
  • One unparsable proxy line no longer aborts the whole round. Valid entries keep working, skipped entries are logged with their line number, and the round is only skipped when nothing is usable.
  • Pasting a JSON array (the shape the config editor uses for proxies) into the legacy proxy string field now works instead of failing with proxy must be [host]:port:user:password.
  • Proxy entries without credentials are accepted: host:port and host:port:user are valid next to host:port:user:password, and passwords may contain colons.
  • accepted_blocks now defaults to [10, 11, 12]. 11 blocks ≈ 312 characters is the current full-strength shape for the gpt-5.6 / gpt-6 era, so the previous [10, 12] default rejected every probe against those models. Set [10, 12] to restore the stricter behaviour.

Added in v0.5.2

  • The status page explains plugin-raised failures instead of the generic "Operation failed; inspect local plugin logs for details": missing/unusable proxy configuration, unreachable egress, upstream HTTP status, and rejected state shapes (with the received length and block count) each get their own message.
  • Every failed probe attempt is written to the log with route, proxy_index, attempt, and the error, with proxy credentials redacted, so a failing egress can be identified without guessing.
  • The status page shows the accepted block counts as its own chip (also accepted_blocks in the JSON view).

Fixed in v0.5.1

  • attempts_per_route is now declared in the plugin registration metadata, so it appears in the CPA plugin configuration editor instead of only in config.yaml.
  • The status page shows the per-route attempt budget as its own chip.
  • The direct_probe description now matches the actual behaviour: an accepted direct state is cached and ends the round rather than only being logged.

Added in v0.5.0

  • The status page and JSON now count, per account+model, requests that carried a cached ticket (injections), requests that passed every gate but left with no state (bare_requests), and whether a harvested response handed back the ticket already held (ticket_echoes) or a different one (ticket_changes). A non-zero bare_requests is the visible signal that injection is silently failing open, and the echo/change split shows whether the upstream returns the ticket it was given or reissues one per turn.
  • The counters are persisted in runtime.json next to cached states, probe logs, and injection records, so a reload keeps the history.
  • attempts_per_route (default 1, maximum 10): retry the direct route or a single proxy before the probe moves on to the next egress, inside the max_probe_attempts budget. Raise it when one attempt per egress keeps returning a rejected state length. The default keeps the previous rotation.

Install with CPA

Add this URL to plugins.store-sources, refresh the plugin store, and install Codex Turn State Probe:

https://raw.githubusercontent.com/spacex-3/cts-plugin/main/registry.json

Then merge config.example.yaml into the existing CPA configuration.