The coding-agent changelog delta analysis is a recurring scan that reads the upstream changelogs and release streams of competing coding agents — Claude Code, OpenAI Codex, OpenRouter's model catalog, and yoagent — and maps each change onto the known defect classes of the local yoyo project at its current HEAD. The purpose is not to catalogue features but to find already-solved upstream versions of bugs yoyo still has, same-class defects, open or unprobed gaps, stale claims in yoyo's own source, and structural gaps that no single fix will close. Findings that need action are filed as issues.
This page records two scans:
Day 230 (2026-10-15/16) — assessed against yoyo HEAD 7964e5fa, covering Claude Code 2.1.301, Codex CLI 0.163.0, and yoagent 0.25.6.
Day 247 (2026-11-02) — continues from the previous scan, which stopped at Claude Code 2.1.312, through Claude Code 2.1.314–2.1.316, Codex rust-v0.160 → 0.166, and the live OpenRouter model API.
Key Points
Grep/Glob error reporting (Claude Code #10, Day 230) is already handled. Users hit the missing-path case earlier: yoyo's /grep was fixed on Day 221 to exit 2 on a missing path, and the model-side search was fixed upstream in yoagent 0.25.5, so an abnormal search termination is never rendered as "No matches".
Binary-file reads (Claude Code #24, Day 230) are a different, partially-open case. yoagent's read_file uses tokio::fs::read_to_string, so non-UTF-8 binaries fail with a raw stream did not contain valid UTF-8 error rather than being read as text — but valid-UTF-8 files containing NUL bytes would still be read as text. This has not been probed.
Mid-turn tool cancellation (Claude Code #19, Day 230) matches a known yoyo defect. A tool call cut off by a message sent mid-turn being reported to the model as user-rejected is the same class as yoyo issue #988 (cancel arrives as a failure).
Codex CLI's parallel read-only tools (0.163.0, Day 230) are already implemented. yoagent already ships .
ToolExecutionStrategy::Parallel
yoagent 0.25.6 (Day 230) changed only pricing. DeepSeek is charged at the peak rate once prices::enable_bundled() is active, so reported costs are an upper bound off-peak.
A stale in-repo claim was found on Day 230.src/fence_result_filter.rs still asserts that yoyo cannot add --no-config and that RIPGREP_CONFIG_PATH can reshape search output; both statements have been false since yoagent 0.25.5.
Model-id normalization behind gateways is a real defect class (Day 247). Claude Code 2.1.314 fixed dotted model ids (claude-opus-4.8) being mis-parsed as older models, which silently corrupted context window, output limit, effort level, thinking mode, and cost. yoyo has the mirror-image bug via OpenRouter naming.
Silent-success-on-failure is another (Day 247).claude -p used to exit 0 with no output when startup failed; it now prints the error and exits 1. yoyo's checker already exits 2 with a message on an unknown provider — no action needed.
Permission fences are converging on symmetry (Day 247). Claude Code added a write-side fence (permissions.blockWritesOutsideWorkingDirectories) matching yoyo's existing outside-read fence.
Undocumented changes are a category of their own (Day 247). Claude Code 2.1.315 shipped stricter default certificate trust and MCP no-redial after a policy 403 with no changelog entry — a reminder that changelogs are an incomplete signal.
The two biggest residual gaps for yoyo are interaction (mid-turn steering, TUI) and model-catalog freshness on gateway providers — neither is a single-patch item.
Concepts
yoyo — the host project; the Day 230 delta is assessed against HEAD 7964e5fa.
yoagent — the agent library yoyo builds on; version 0.25.5 fixed search-error reporting and invalidated the fence_result_filter.rs claims, 0.25.6 changed DeepSeek pricing.
Claude Code 2.1.301 — upstream reference changelog for the Day 230 scan (source: anthropics/claude-codeCHANGELOG.md).
Codex CLI 0.163.0 — second upstream reference changelog for the Day 230 scan.
src/fence_result_filter.rs — yoyo source file containing stale assertions about --no-config and RIPGREP_CONFIG_PATH.
Defect-class mapping — matching an upstream fix to the local bug it implies, rather than to a feature name.
LLM gateway model id normalization — dotted vs. dashed id spellings (claude-sonnet-4.6 vs claude-sonnet-4-6) and the metadata that silently defaults when an id is unrecognised.
Guessed model limits — fallback values (128K context / 4096 max_tokens) used when a model is absent from the catalog.
Write fence / read fence — permission boundaries restricting Write/Edit (or reads) to the working directories, ideally enforced in every mode.
Effort level — a tunable reasoning-effort setting, per-session and (in 2.1.316) per-sub-agent.
Mid-turn steering — sending a follow-up instruction while the agent is still responding.
Terminal vs. recoverable failure — e.g. model-not-found treated as fatal rather than retried.
Named permission profiles — presets such as :read-only, :workspace, :danger-full-access.
yoyo-evolve#1037 — issue filed during the Day 247 scan for the OpenRouter model-id normalization gap.
Details
The delta workflow (Day 230)
Rendering diagram…
Claude Code 2.1.301 (2026-10-15) — Day 230
#
Upstream change
yoyo / yoagent disposition
10
Grep and Glob no longer report "no matches" when the search program fails before returning results; they now return an error.
Already covered. User-side /grep fixed Day 221 (exit 2 on a missing path); model-side search fixed in yoagent 0.25.5 — an abnormal end is never reported as "No matches".
24
The Read tool read binary files (.xlsm, .parquet, .epub, .heic) as text.
Partially different, unprobed. yoagent read_file uses tokio::fs::read_to_string, so non-UTF-8 binaries fail with a raw stream did not contain valid UTF-8 error rather than reading as text. Valid-UTF-8 binaries containing NUL bytes would still read as text.
19
A tool call cut off by a message sent mid-turn was reported to the model as rejected by the user.
Same defect class as yoyo #988 (a cancel arrives as a failure).
21
Compaction looped behind an LLM gateway whose responses named a different model than the one requested.
Noted; no yoyo mapping recorded.
9
A misleading /login error on a full disk now names the disk.
Noted; no yoyo mapping recorded.
1
An unattended retry watchdog gets a max wait for usage-limit resets.
Compare against yoyo's --wait-for-reset.
Codex CLI 0.163.0 (2026-10-15) — Day 230
Parallel execution for read-only tools — yoagent already provides this via ToolExecutionStrategy::Parallel.
A verified sandbox launcher exposed to local MCP servers.
Network policy enforced in standalone MCP commands.
Source attribution for individual context parts.
yoagent 0.25.6 (2026-10-16) — Day 230
DeepSeek is priced at the peak rate after prices::enable_bundled(); reported costs are consequently an upper bound off-peak.
Nothing else changed.
Stale claim found Day 230
src/fence_result_filter.rs still states that yoyo cannot add --no-config, and that RIPGREP_CONFIG_PATH can reshape search output. Both assertions have been false since yoagent 0.25.5 and should be corrected.
Scan scope and method (Day 247)
Sources for the Day 247 scan: the Claude Code CHANGELOG.md, a third-party write-up of undocumented env vars in 2.1.315, a Codex release tracker for October 2026, and the live OpenRouter model API.
Each upstream item is read against yoyo's existing defect classes; where a counterpart exists, the local behaviour is measured (not assumed) and recorded. Where no counterpart exists, the item is classified as a gap. Findings that need action get filed as issues (this scan produced yoyo-evolve#1037).
Rendering diagram…
Claude Code 2.1.314 — Day 247
Dotted model ids behind an LLM gateway. Ids like claude-opus-4.8 were treated as an older model, so context window, output limit, effort, thinking mode and cost were all wrong.
yoyo counterpart, measured Day 247: OpenRouter's catalog spells every Anthropic id with dots — anthropic/claude-sonnet-4.6 reports a 1M context and 128000 max completion tokens. yoyo's OpenRouter default is the dashed anthropic/claude-sonnet-4-6, which is not in that catalog, so every OpenRouter Claude id runs on guessed limits of 128K / 4096 max_tokens. Filed as yoyo-evolve#1037 — this is a live instance of the same defect class.
Silent failure in non-interactive mode.claude -p exited 0 with no output when startup failed; it now prints the error and exits 1.
yoyo counterpart: checked — an unknown provider exits 2 with a message. Already correct.
permissions.blockWritesOutsideWorkingDirectories — Write/Edit refuse paths outside the working directories in every mode. This is the write-side twin of yoyo's outside-read fence; the implication is that yoyo's fence is one-sided.
Smaller hardening: PreCompact hook output capped at 10,000 chars; failed beta headers retried without the header; an invalid effort level is lowered and retried, and the level actually used is named in the output.
Claude Code 2.1.315 (undocumented) — Day 247
Shipped with no changelog entry: stricter certificate trust, on by default, and MCP no re-dial after a policy 403. Both are behaviour changes discoverable only by reading release artifacts or testing.
Claude Code 2.1.316 — Day 247
CLAUDE_CODE_SUBAGENT_EFFORT sets the effort level for sub-agents. yoyo has a sub_agent_model knob but no effort knob — a small, direct gap.
Bash tool regression risk: exporting SHELLOPTS caused scripts to stop after their first command.
Shell commands kept running after Claude Code itself exited — process-lifecycle leak on self-termination.
/model <id> now warns on an unrecognised id, and auto-compact assumes a 200K window for unknown models. yoyo already warns about guessed limits, so this is parity, not a gap.
Codex rust-v0.160 → 0.166 (October 2026) — Day 247
Mid-turn steering — send a follow-up while the agent is still responding.
Ten /presets prompt slots.
Inline /model and /permissions arguments.
Built-in Vertex AI provider.
GPT-6.1 Sol as default, with GPT-6.1 Terra added.
/mcp login for MCP authentication.
Memory v2 on by default.
Model-not-found treated as a terminal failure (#56445).
Named permission profiles::read-only, :workspace, :danger-full-access.
Gap assessment for yoyo (Day 247)
Two gaps remain structural rather than fixable by a single patch:
Interaction — mid-turn steering and a TUI. Codex and Claude Code both let a user redirect an in-flight turn; yoyo does not.
Model-catalog freshness on gateway providers — until the catalog is consulted and ids normalized, every gateway-hosted model silently runs on guessed limits, which distorts context budgeting, cost, and effort. This is the same failure mode Claude Code fixed in 2.1.314, and yoyo still exhibits it in production.