Two related fixes so newly-released Claude models don't silently truncate
responses at 4096 output tokens (which manifests as the model 'stopping
mid tool-call' from the user's perspective):
1. Refresh the bundled canonical model registry from models.dev. This
adds claude-opus-4-7, claude-opus-4-8, and bumps the registry from
4740 to 4965 models. Generated by:
cargo run --bin build_canonical_models
With the refreshed registry, claude-opus-4-8 now resolves through
strip_version_suffix's existing '-N-M' -> '-N.M' normalization to the
canonical 'anthropic/claude-opus-4.8' entry (1M context, 128k output).
2. Add a Claude-4+ family floor to ModelConfig::max_output_tokens(). When
GOOSE_MAX_TOKENS is unset and the canonical lookup doesn't populate
max_tokens (e.g. a brand-new model id one release ahead of the bundled
registry), we previously fell back to a hard 4096. That's a cliff:
every Claude 4.x model supports at least 32k output, and capping at
4096 cuts off tool_use blocks mid-stream, which agents experience as
the model 'not making tool calls'.
The new floor is 32k for Claude 4+ family ids (matches the lowest
real 4.x output cap). Claude 3.x and non-Claude models keep the
existing 4096 default since their real caps are genuinely small.
Also adds claude-opus-4-7 and claude-opus-4-8 to ANTHROPIC_KNOWN_MODELS
for UI/discovery.
Tests:
- canonical_lookup_resolves_dash_to_dot_for_claude_4_x: verifies
claude-opus-4-{1,5,6,7,8} all resolve to the canonical entry and
get a real (>4096) output cap.
- claude_4_family_falls_back_to_32k_not_4096: verifies the family
floor for unknown future ids (claude-opus-4-9, anthropic/claude-opus-4.8,
databricks-claude-opus-4.6, etc).
- claude_3_and_non_claude_keep_4096_default: regression guard.
- explicit_max_tokens_always_wins: GOOSE_MAX_TOKENS still overrides.
Also updates sets_limits_from_canonical_model to assert shape rather
than a hardcoded gpt-4o output number (16384 -> 4096 in models.dev),
so the test stops breaking every registry refresh.
🦆 goose has moved! This project has moved from
block/gooseto 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
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
- Quickstart
- Installation
- Tutorials
- Documentation
- Governance
- Custom Distributions — build your own goose distro with preconfigured providers, extensions, and branding
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! 🚀