Skip to content

Added cmd to validate bundled extensions json#7217

Merged
zanesq merged 3 commits intomainfrom
zane/validate-bundled-extensions-cmd
Feb 17, 2026
Merged

Added cmd to validate bundled extensions json#7217
zanesq merged 3 commits intomainfrom
zane/validate-bundled-extensions-cmd

Conversation

@zanesq
Copy link
Collaborator

@zanesq zanesq commented Feb 13, 2026

Summary

Problem: The goose-releases repo has a bundled-extensions.json that defines extensions
shipped with the internal desktop app. Two extensions (Asana and Neighborhood) were added
with "type": "http", but the app only recognizes "builtin", "stdio", and "streamable_http".
When the sync loop hit Asana, it crashed and silently dropped every extension after it.
There was no way to catch this before shipping. The release built fine and the error only
surfaced at runtime.

Solution: Added a hidden validate-extensions command to both the goose CLI and goosed
server binaries. It reads a bundled-extensions.json file, attempts to deserialize each
entry into the same ExtensionConfig enum the runtime uses, and reports all errors with
the extension name and index. It specifically detects common mistakes like unknown type
values (listing the valid ones) and "url" vs "uri" field confusion on streamable_http
entries. It exits with code 1 on any error, making it suitable as a CI gate step in the
release workflow right after the Rust build, before packaging. The list of valid types is
defined as a constant on ExtensionConfig itself so it lives next to the enum definition
and has a test ensuring it stays in sync.

@zanesq zanesq requested a review from DOsinga February 13, 2026 21:18
…led-extensions-cmd

* 'main' of github.com:block/goose: (24 commits)
  Set up direnv and update flake inputs (#6526)
  fix: restore subagent tool call notifications after summon refactor (#7243)
  fix(ui): preserve server config values on partial provider config save (#7248)
  fix(claude-code): allow goose to run inside a Claude Code session (#7232)
  fix(openai): route gpt-5 codex via responses and map base paths (#7254)
  feat: add GoosePlatform to AgentConfig and MCP initialization (#6931)
  Fix copied over (#7270)
  feat(gemini-cli): add streaming support via stream-json events (#7244)
  fix: filter models without tool support from recommended list (#7198)
  fix(google): handle more thoughtSignature vagaries during streaming (#7204)
  docs: playwright CLI skill tutorial (#7261)
  install node in goose dir (#7220)
  fix: relax test_basic_response assertion for providers returning reasoning_content (#7249)
  fix: handle reasoning_content for Kimi/thinking models (#7252)
  feat: sandboxing for macos (#7197)
  fix(otel): use monotonic_counter prefix and support temporality env var (#7234)
  Streaming markdown (#7233)
  Improve compaction messages to enable better post-compaction agent behavior (#7259)
  fix: avoid shell-escaping special characters except quotes (#7242)
  fix: use dynamic port for Tetrate auth callback server (#7228)
  ...
@zanesq zanesq added this pull request to the merge queue Feb 17, 2026
@zanesq zanesq removed this pull request from the merge queue due to a manual request Feb 17, 2026
@zanesq zanesq added this pull request to the merge queue Feb 17, 2026
Merged via the queue into main with commit fea34ac Feb 17, 2026
19 of 21 checks passed
@zanesq zanesq deleted the zane/validate-bundled-extensions-cmd branch February 17, 2026 17:59
zanesq added a commit that referenced this pull request Feb 17, 2026
…ions-fallback

* 'main' of github.com:block/goose: (43 commits)
  Added cmd to validate bundled extensions json (#7217)
  working_dir usage more clear in add_extension (#6958)
  Use Canonical Models to set context window sizes (#6723)
  Set up direnv and update flake inputs (#6526)
  fix: restore subagent tool call notifications after summon refactor (#7243)
  fix(ui): preserve server config values on partial provider config save (#7248)
  fix(claude-code): allow goose to run inside a Claude Code session (#7232)
  fix(openai): route gpt-5 codex via responses and map base paths (#7254)
  feat: add GoosePlatform to AgentConfig and MCP initialization (#6931)
  Fix copied over (#7270)
  feat(gemini-cli): add streaming support via stream-json events (#7244)
  fix: filter models without tool support from recommended list (#7198)
  fix(google): handle more thoughtSignature vagaries during streaming (#7204)
  docs: playwright CLI skill tutorial (#7261)
  install node in goose dir (#7220)
  fix: relax test_basic_response assertion for providers returning reasoning_content (#7249)
  fix: handle reasoning_content for Kimi/thinking models (#7252)
  feat: sandboxing for macos (#7197)
  fix(otel): use monotonic_counter prefix and support temporality env var (#7234)
  Streaming markdown (#7233)
  ...

# Conflicts:
#	crates/goose/src/config/extensions.rs
jh-block added a commit that referenced this pull request Feb 18, 2026
* origin/main: (49 commits)
  chore: show important keys for provider configuration (#7265)
  fix: subrecipe relative path with summon (#7295)
  fix extension selector not displaying the correct enabled extensions (#7290)
  Use the working dir from the session (#7285)
  Fix: Minor logging uplift for debugging of prompt injection mitigation (#7195)
  feat(otel): make otel logging level configurable (#7271)
  docs: add documentation for Top Of Mind extension (#7283)
  Document gemini 3 thinking levels (#7282)
  docs: stream subagent tool calls (#7280)
  Docs: delete custom provider in desktop (#7279)
  Everything is streaming (#7247)
  openai: responses models and hardens event streaming handling (#6831)
  docs: disable ai session naming (#7194)
  Added cmd to validate bundled extensions json (#7217)
  working_dir usage more clear in add_extension (#6958)
  Use Canonical Models to set context window sizes (#6723)
  Set up direnv and update flake inputs (#6526)
  fix: restore subagent tool call notifications after summon refactor (#7243)
  fix(ui): preserve server config values on partial provider config save (#7248)
  fix(claude-code): allow goose to run inside a Claude Code session (#7232)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments