Erik Nilsen 72efd50069 fix(goose): never append unsigned thinking deltas to a signed block
The previous coalesce guard merged a new delta whenever either side
had an empty signature. In signature-at-end streams (e.g. Anthropic's
content_block deltas, where the closing chunk carries `signature`),
the first text of the *next* thinking block arrives unsigned and was
appended to the previous block's already-signed content. Replay would
then send that body under the wrong signature and fail provider-side
validation of per-block signatures.

Tighten the predicate to require that either `last` is unsigned (still
mid-block) or the signatures match. An unsigned delta following a
signed block falls through to the default arm and lands as a new
`MessageContent::Thinking` item. The previous
`adopts_latest_signature` test is replaced with two narrower tests:
`adopts_signature_on_closing_delta` (unsigned → signed merges into
the closing delta) and `unsigned_thinking_after_signed_starts_new_block`
(the signature-at-end case Codex flagged).

Addresses Codex P1 on #9162 (conversation/mod.rs:63).

Signed-off-by: Erik Nilsen <enilsen16@live.com>
2026-05-12 13:47:16 -07:00
…
2026-05-11 16:02:44 +00:00
2026-05-12 12:54:16 -04:00
…
…
…

🦆 goose has moved! This project has moved from block/goose to the Agentic AI Foundation (AAIF) at the Linux Foundation. Some links and references are still being updated — please bear with us during the transition.

goose

your native open source AI agent — desktop app, CLI, and API — for code, workflows, and everything in between

Discord CI

goose is a general-purpose AI agent that runs on your machine. Not just for code — use it for research, writing, automation, data analysis, or anything you need to get done.

A native desktop app for macOS, Linux, and Windows. A full CLI for terminal workflows. An API to embed it anywhere. Built in Rust for performance and portability.

goose works with 15+ providers — Anthropic, OpenAI, Google, Ollama, OpenRouter, Azure, Bedrock, and more. Use API keys or your existing Claude, ChatGPT, or Gemini subscriptions via ACP. Connect to 70+ extensions via the Model Context Protocol open standard.

goose is part of the Agentic AI Foundation (AAIF) at the Linux Foundation.

Get started

Download the desktop app for macOS, Linux, and Windows.

Or install the CLI:

curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash

Quick links

Need help?

a little goose humor 🪿

Why did the developer choose goose as their AI agent?

Because it always helps them "migrate" their code to production! 🚀

goose around with us

S
Description
No description provided
Readme Apache-2.0 1.5 GiB
Languages
Rust 63.6%
TypeScript 29.6%
JavaScript 1.7%
Shell 1.6%
Python 1.5%
Other 1.8%