Skip to content

feat: ACP providers for claude code and codex#6605

Merged
codefromthecrypt merged 5 commits intomainfrom
acole/acp-provider
Mar 10, 2026
Merged

feat: ACP providers for claude code and codex#6605
codefromthecrypt merged 5 commits intomainfrom
acole/acp-provider

Conversation

@codefromthecrypt
Copy link
Collaborator

@codefromthecrypt codefromthecrypt commented Jan 21, 2026

Summary

Goose can now use any ACP agent as a provider. This adds AcpProvider, a generic Provider implementation that speaks the ACP protocol over stdio transport, and wires up two concrete providers:

Adding more ACP agents is just a new ProviderDef and configuration such as the binary and permissions mappings.

Key capabilities:

  • MCP extension passthrough (agents receive goose's --with-extension servers)
  • Permission routing (just like claude-code CLI provider)
  • Model listing and switching via session/new and session/set_model

Key limitations which are punted to prevent this PR taking forever:

  • No session fork/resume: Later, we can add support for that, but it implies a strategy as agents have different features (some load, not resume etc).
  • ACP session ID != Goose session ID: We can refactor goose to adopt instead of create a session_id so that telemetry fields are consistent.

Type of Change

  • Feature
  • Tests

AI Assistance

  • This PR was created or reviewed with AI assistance

Testing

Provider integration tests

$ OLLAMA_HOST=http://localhost:11434 cargo test --test providers -- --nocapture

running 18 tests
Skipping Databricks tests - credentials not configured
Skipping aws_bedrock tests - credentials not configured
Skipping SageMakerTgi tests - credentials not configured
test test_bedrock_provider_long_term_credentials ... ok
Skipping aws_bedrock tests - credentials not configured
Skipping aws_bedrock tests - credentials not configured
test test_databricks_provider ... ok
Skipping Anthropic tests - credentials not configured
Skipping openai tests - credentials not configured
test test_sagemaker_tgi_provider ... ok
test test_bedrock_provider_bearer_token ... ok
test test_bedrock_provider_aws_profile_credentials ... ok
test test_anthropic_provider ... ok
Skipping Xai tests - credentials not configured
test test_openai_provider ... ok
Skipping Azure tests - credentials not configured
Skipping Google tests - credentials not configured
Skipping Snowflake tests - credentials not configured
test test_xai_provider ... ok
test test_azure_provider ... ok
Skipping OpenRouter tests - credentials not configured
Skipping LiteLLM tests - credentials not configured
test test_google_provider ... ok
test test_snowflake_provider ... ok
test test_openrouter_provider ... ok
test test_litellm_provider ... ok
=== Ollama::model_listing ===
=== claude-acp::model_listing ===
=== codex-acp::model_listing ===
=== claude-code::model_listing ===
=== codex::model_listing ===
=== Ollama::basic_response === Hello! 😊 How can I assist you today?
=== claude-acp::basic_response === Hello!
=== codex-acp::basic_response === Hello!
=== claude-code::basic_response === Hello! 👋 How can I help you today?
=== codex::basic_response === Hello!
=== Ollama::tool_usage === test-uuid-12345-67890
=== claude-acp::tool_usage === test-uuid-12345-67890
=== codex-acp::tool_usage === I'll call the `get_code` tool now and return exactly its output.test-uuid-12345-67890
=== claude-code::tool_usage === test-uuid-12345-67890
=== codex::tool_usage === test-uuid-12345-67890
=== Ollama::image_content === the image displays the text **"hello goose! this is a test image."** on a plain white background. the text is centered and rendered in a simple, sans-serif font. the message serves as a straightforward confirmation that the image tool is functioning correctly as part of a test scenario.
=== claude-acp::image_content === the image is a simple white rectangle with black text centered on it. it displays two lines:

1. **"hello goose!"**
2. **"this is a test image."**

it's a basic test image, likely used to verify that image retrieval and rendering from the mcp server is working correctly.
=== codex-acp::image_content === i'll fetch the image from `get_image` first, then i'll inspect it and describe exactly what's visible.the image is a simple light-gray rectangle with centered black text that reads:

"hello goose!
this is a test image."
=== claude-code::image_content === the image is a simple white graphic with black text centered on it. it reads:

> **hello goose!**
> **this is a test image.**

it appears to be a basic test/placeholder image, likely used for verifying that the mcp fixture's `get_image` tool correctly returns image data.
=== codex::image_content === the image shows a white background with large black text that reads: "hello goose! this is a test image."
test test_codex_provider ... ok
=== Ollama::context_length_exceeded_error ===
=== claude-acp::model_switch (default -> sonnet) === Hello!
=== codex-acp::permission_allow ===
=== claude-code::model_switch (default -> sonnet) === Hello! 👋 How can I help you today?
=== Ollama::permission_allow ===
=== claude-acp::permission_allow ===
=== codex-acp::permission_deny ===
test test_codex_acp_provider ... ok
=== claude-code::permission_allow ===
=== Ollama::permission_deny ===
test test_ollama_provider ... ok
=== claude-acp::permission_deny ===
test test_claude_acp_provider ... ok
=== claude-code::permission_deny ===
test test_claude_code_provider ... ok

test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 342.52s


============== Providers ==============
⏭️ Anthropic
⏭️ Azure
⏭️ Databricks
⏭️ Google
⏭️ LiteLLM
✅ Ollama
⏭️ OpenRouter
⏭️ SageMakerTgi
⏭️ Snowflake
⏭️ Xai
⏭️ aws_bedrock
✅ claude-acp
✅ claude-code
✅ codex
✅ codex-acp
⏭️ openai
=======================================

Claude ACP

$ npm install -g @zed-industries/claude-agent-acp

changed 6 packages in 2s

3 packages are looking for funding
  run `npm fund` for details
$ GOOSE_PROVIDER=claude-acp GOOSE_MODEL=default target/release/goose run \                                                                            
>   --with-extension 'MY_TEST_VAR=hello_from_goose npx -y @modelcontextprotocol/server-everything' \
>   -t 'Use the get-env tool and show me the value of MY_TEST_VAR'


    __( O)>  ● new session · claude-acp default
   \____)    20260309_27 · /Users/codefromthecrypt/oss/goose
     L L     goose is ready
The value of `MY_TEST_VAR` is `hello_from_goose`.
$ GOOSE_PROVIDER=claude-acp GOOSE_MODEL=default target/release/goose run \                                                                            
>   --with-streamable-http-extension 'https://mcp.kiwi.com' \
>   -t 'Use the kiwi search-flight tool to find fastest itinerary from BKI to SYD tomorrow'

    __( O)>  ● new session · claude-acp default
   \____)    20260309_31 · /Users/codefromthecrypt/oss/goose
     L L     goose is ready
Here are the flights from **Kota Kinabalu (BKI)** to **Sydney (SYD)** on **March 10, 2026**, sorted by duration:

## Shortest Flights

| Route                 | Schedule                            | Price | Book                               |
|-----------------------|-------------------------------------|-------|------------------------------------|
| BKI → SIN → SYD       | 10/03 20:00 → 11/03 12:20 (13h 20m) | €260  | [Book](https://on.kiwi.com/b7qLQk) |
| BKI → KCH → SIN → SYD | 10/03 18:45 → 11/03 12:20 (14h 35m) | €293  | [Book](https://on.kiwi.com/oIvLqF) |
| BKI → SIN → DPS → SYD | 10/03 11:50 → 11/03 06:15 (15h 25m) | €303  | [Book](https://on.kiwi.com/QmJabs) |
## Cheapest Flights
--snip--

Codex ACP

$ npm install -g @zed-industries/codex-acp

changed 2 packages in 569ms
$ GOOSE_PROVIDER=codex-acp GOOSE_MODEL=gpt-5.2-codex target/release/goose run \                                                                       
>   --with-extension 'MY_TEST_VAR=hello_from_goose npx -y @modelcontextprotocol/server-everything' \
>   -t 'Use the get-env tool and show me the value of MY_TEST_VAR'

    __( O)>  ● new session · codex-acp gpt-5.2-codex
   \____)    20260309_29 · /Users/codefromthecrypt/oss/goose
     L L     goose is ready
I’ll query the `get-env` tool now and return the value of `MY_TEST_VAR`.`MY_TEST_VAR=hello_from_goose`
$ GOOSE_PROVIDER=codex-acp GOOSE_MODEL=gpt-5.2-codex target/release/goose run \
>   --with-streamable-http-extension ‘https://mcp.kiwi.com’ \
>   -t ‘Use the kiwi search-flight tool to find fastest itinerary from BKI to SYD tomorrow’

    __( O)>  ● new session · codex-acp gpt-5.2-codex
   \____)    20260309_39 · /Users/codefromthecrypt/oss/goose
     L L     goose is ready
--snip--
Flights for **tomorrow, March 10, 2026** (BKI -> SYD, 1 adult, Economy, USD, local times):

**Shortest (Fastest)**
| Route | Dep/Arr + Duration | Cabin | Price | Book |
|---|---|---|---:|---|
| BKI -> SIN -> SYD | 10/03 20:00 -> 11/03 12:20 (13h 20m) | Economy | $303 | [Book](https://on.kiwi.com/c50Psj) |

**Cheapest**
| Route | Dep/Arr + Duration | Cabin | Price | Book |
|---|---|---|---:|---|
| BKI -> SIN -> SYD | 10/03 20:00 -> 11/03 18:50 (19h 50m) | Economy | $258 | [Book](https://on.kiwi.com/0UAGy8) |
--snip--

@codefromthecrypt
Copy link
Collaborator Author

codefromthecrypt commented Jan 21, 2026

@michaelneale @baxen @alexhancock I may be out of time this week and I wanted this to be a collaborative thing anyway. if either of you want to work on this branch it would be gratefully accepted.

The main thing I found is that I can't really test claude because I downgraded my subscription and so get a wait for problem later.

I started testing codex, and first ran into the npx wrapper not working out, so was doign a pattern to cache the rust binary to run directly, similar to how zed works around the same issue.

Hopefully somethjign like this works in the future for claude and codex and when things work well enough we can kill the. CLI providers.
GOOSE_MODE=auto ./target/release/goose run --provider codex-acp --model default -t "hello from codex acp smoke"

Anyway I'm done for at least a day I think so it is safe to work on if one feels like it.

@michaelneale
Copy link
Collaborator

nice - tested with claude and codex - did see odd artifacts like:

I'll list the files in the current working directory.
─── Terminal |  ──────────────────────────

-32002: Tool 'Terminal' not found
─── `ls -la` |  ──────────────────────────
command: ls -la
description: List files in current directory

-32002: Tool '`ls -la`' not foundThe current directory contains a Rust-based project (likely Goose

but it did work and call things - nice!

@michaelneale
Copy link
Collaborator

tagging @DOsinga as this adds a crate etc, but seems to work nice. this will replace the CLI providers.

@alexhancock
Copy link
Collaborator

Nice!

In https://discord.com/channels/1287729918100246654/1408153538537721966/1463661278202695754 I had moved the ACP server code to the goose-acp crate as it seemed very closely related conceptually and added less overhead. Seemed reasonable?

I love the idea of having ACP wrappers for Claude Code and Codex but wonder if there are ones available already we could use? cc @benbrandt

@codefromthecrypt
Copy link
Collaborator Author

@alexhancock on

I love the idea of having ACP wrappers for Claude Code and Codex but wonder if there are ones available already we could use? cc @benbrandt

So, this uses the same wrappers as zed uses and maintains

I ran into a problem using the npm launched in codex-acp, remember codex-acp is actually a rust binary. Then I inspected the zed code and found they are extracting it from the github repo. So, we are doing the same more or less here.

One thing to follow-up on is once the ACP registry is live, this code will be a lot easier.

If your question is about us needed mappings, that's because this change is about goose -> acp and we are not making a large change to goose itself. So we need to adapt our concepts of approval mode etc to these providers who are not 100pct consistent. that's because ACP is designed to propagate approval and mode choices all the way to the client. Currently Goose CLI, UI etc is not designed to work with third party modes. Hence, we have some glue that we need until that's the case.

OTOH for clients calling into goose, nothing changed here. This PR is about adapting our provider infrastructure so that we can have an option besides completely bespoke "CLI provider" glue.

Hope these pointers help!

p.s. goose is lacking modularity for shared packages which is why there's crate re-org. If there was a goose-api crate, and types like provider etc were there, we'd not have the dependency cycle issues which forced into goose-acp-server and goose-acp-client. Since goose isn't used as a library formally anyway, this is tech debt we can clean up and prevent most things getting stuck in goose crate for the same reason.

@codefromthecrypt
Copy link
Collaborator Author

rebase of this is a bear due to intentional session-id tightening. I got it.

TL;DR; since ACP agents own the sessions, we need to rejig a bit to not fight over the ID.

Right now ACP spec does not allow BYO id you have to get one back from the agent. correlation mapping is not great because ops like terminal cross processes and that would force us to add an external id into the DB. The other way is to rejig so that initial session ID creation algo can be overridden based on the provider type, defaulting to normal session manager. So, for ACP, we create a session then get its id and insert it into the normal session manager. That allows us to have 1-1 correlation of session ID. Next is how to do cold resume of session... depending on agent it is load or resume and there is nuance on how to handle this, but we have the code to handle both. If/when ACP changes the session new/load/resume we can replumb, but anyway while what I describe sounds creaky it isn't more troublesome than permission managing.

I have a plan for this and the next push will implement it and update the desc with a diagram how.

@benbrandt
Copy link

Yes we manage the claude and codex wrappers. Though for clarity:

  • claude-code-acp is a wrapper around the claude-agent-sdk, which vendors in a version of claude code and spawns it as a subprocess and their sdk manages that
  • codex-acp is not a "wrapper" but rather a separate binary that pulls a (minimal) fork of codex we use as a Rust dependency. I keep the fork fairly up to date, but just good to note it is a single binary, and unlike claude, doesn't use codex as a subprocess

Regarding codex's npx usage... I worked with another team to add npm support. We don't use it ourselves, but I would hope it works. If it needs to be fixed, and you can provide more information, we can also do that so you can use that if you'd rather

@codefromthecrypt
Copy link
Collaborator Author

@benbrandt on codex-acp I ran into unexplained unresponsiveness, which could be due to internal bootstrapping perhaps. I tried several times despite claude-code-acp working initially. Noting that and that I'm basically working way too much every day I decided to not try to trace the process to figure out where it is glitching, especially as the direction of the registry is download links, also noticing zed only ever used the actual binary. So, basically YMMV on that but being already behind and ACP work due to some engineering and lovely stuff like this.. I'll just whistle by the npm bootstrapper glitch. hope it makes sense! https://github.com/agentclientprotocol/registry/blob/main/codex-acp/agent.json

@codefromthecrypt codefromthecrypt force-pushed the acole/acp-provider branch 2 times, most recently from 0c4bc41 to 505e47e Compare January 27, 2026 08:42
@codefromthecrypt
Copy link
Collaborator Author

update on this. This branch is really expensive to maintain, particularly as there are so many model gaps between the provider design and ACP sessions. Each time I touch this I lose several hours and it still isn't a great bridge between provider and ACP.

I'd like folks to pipe in if this should ship as-is or continue at all. I think Provider -> ACP is really awkward and the days spent on this direction while instructive could have been better spent making a whole new API backend.

@codefromthecrypt
Copy link
Collaborator Author

I'm going to flatten this stuff into the goose crate as working around it is a cure worse than the disease. that we had a goose-acp crate at all only worked for the server side as it did't need access to goose core types, which are mixed with impl and cause a lot of tension that results in a bit of a mess. best path out is to just keep adding things to goose core crate until we work out modularity as this isn't about ACP rather ACP is just another example of the same tension, which is inability to implement a provider neatly except inside goose crate.

@codefromthecrypt
Copy link
Collaborator Author

#6803 is merged with most of the test refactor stuff, but I will wait until #6832 is in to rebase as that will take the cruft out of defining ACP providers and together will make this PR readable.

@codefromthecrypt
Copy link
Collaborator Author

once this is in probably for real rebase. this PR levels non-acp claude and codex and what they need to stitch MCP through. this will make the ACP variants more straightforward to compare as they are very similar to CLI providers #6972

For this reason I've been toying with us calling the formerly unqualified Provider "LLM Provider" and either CLI or ACP as "Agentic Provider"

@codefromthecrypt
Copy link
Collaborator Author

I've had something personal come up, I've pushed the latest code I have and if someone can/desires to take this over please do. I updated the PR desc.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 12, 2026

PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://block.github.io/goose/pr-preview/pr-6605/

Built to branch gh-pages at 2026-02-12 05:23 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@DOsinga
Copy link
Collaborator

DOsinga commented Feb 17, 2026

this is still in draft, but looks very sweet - can we get this in @michaelneale & @codefromthecrypt ?

@codefromthecrypt codefromthecrypt force-pushed the acole/acp-provider branch 3 times, most recently from c408d1d to 25903ce Compare March 9, 2026 02:35
@codefromthecrypt
Copy link
Collaborator Author

@DOsinga @michaelneale @lifeizhou-ap as soon as #7738 merges I'll rebase and put this open for review as it works for most use cases now.

@codefromthecrypt codefromthecrypt force-pushed the acole/acp-provider branch 2 times, most recently from 17cca93 to 89b8d72 Compare March 9, 2026 22:33
@codefromthecrypt codefromthecrypt marked this pull request as ready for review March 9, 2026 22:42
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 89b8d722ef

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7e68ab3b13

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1275c4b3f8

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Copy link
Collaborator

@alexhancock alexhancock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

Looks like minor test & lint failure but other than that good

error: couldn't read `crates/goose-acp/tests/common_tests/../test_data/openai_image_attachment.txt`: No such file or directory (os error 2)
Error:    --> crates/goose-acp/tests/common_tests/mod.rs:330:13
    |
330 |             include_str!("../test_data/openai_image_attachment.txt"),

Goose can now use any ACP agent as a provider via stdio transport.

- claude-acp and codex-acp wired as concrete providers
- MCP extension passthrough (agents receive goose MCP servers)
- Permission routing (same as claude-code CLI provider)
- Model listing and switching via session/new and session/set_model

Signed-off-by: Adrian Cole <adrian@tetrate.io>
Signed-off-by: Adrian Cole <adrian@tetrate.io>
Signed-off-by: Adrian Cole <adrian@tetrate.io>
Signed-off-by: Adrian Cole <adrian@tetrate.io>
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4ff04716d0

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +298 to +299
_model_config: &ModelConfig,
session_id: &str,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Apply requested model to ACP session before prompting

The stream path ignores the requested model_config (it is explicitly _model_config) and immediately prompts the cached ACP session, so non-default model selections are never propagated via session/set_model before inference. This causes users who set a model at startup or switch models to silently continue running on the ACP session’s previous/default model; fresh evidence is that a repo-wide search shows AcpProvider::set_model is only called in test fixtures and not from production provider flow.

Useful? React with 👍 / 👎.

Signed-off-by: Adrian Cole <adrian@tetrate.io>
@codefromthecrypt codefromthecrypt added this pull request to the merge queue Mar 10, 2026
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 32cf3f4285

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

}

async fn fetch_supported_models(&self) -> Result<Vec<String>, ProviderError> {
let response = self.ensure_session(None).await?;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reuse an ACP session when fetching supported models

fetch_supported_models calls ensure_session(None), but ensure_session only memoizes sessions when a non-None Goose session ID is provided, so every model-list refresh creates a brand new ACP session. In long-lived clients that poll or reopen model lists, this steadily accumulates orphan ACP sessions (there is no corresponding close path here), which increases memory/state usage and can eventually degrade or break provider behavior.

Useful? React with 👍 / 👎.

Merged via the queue into main with commit 902c2ac Mar 10, 2026
21 checks passed
@codefromthecrypt codefromthecrypt deleted the acole/acp-provider branch March 10, 2026 23:07
@codefromthecrypt
Copy link
Collaborator Author

I will follow up with a doc PR. Thanks for the patience!

@codefromthecrypt
Copy link
Collaborator Author

docs #7800

lifeizhou-ap added a commit that referenced this pull request Mar 11, 2026
* main: (45 commits)
  fix: resolve {{ recipe_dir }} in nested sub-recipe paths during secret discovery (#7797)
  Add @DOsinga as CODEOWNER for documentation (#7799)
  feat: Add summarize tool for deterministic reads (#7054)
  fix(api): use camelCase in CallToolResponse and add type discriminators to ContentBlock (#7487)
  feat: ACP providers for claude code and codex (#6605)
  chore(deps): bump express-rate-limit from 8.2.1 to 8.3.0 in /evals/open-model-gym/mcp-harness (#7703)
  feat(openai): capture reasoning summaries from responses API (#7375)
  Fix some dependencies (#7794)
  fix: improve keyring availability error detection (#7766)
  feat: add MiniMax provider with Anthropic-compatible API (#7640)
  feat: add Tensorix as a declarative provider (#7712)
  fix(security): remove insecure default secret from GOOSE_EXTERNAL_BACKEND (#7783)
  refactor: Convert Tanzu provider to declarative JSON config (#7124)
  replaces https://github.com/block/goose/pull/7340/changes (#7786)
  feat(summon): make skill supporting files individually loadable via load() (#7583)
  Keep toast open on failed extension (#7771)
  fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335)
  fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571)
  fix: write to real file if config.yaml is symlink (#7669)
  fix: preserve pairings when stopping gateway (#7733)
  ...
lifeizhou-ap added a commit that referenced this pull request Mar 11, 2026
* main: (69 commits)
  fix: resolve {{ recipe_dir }} in nested sub-recipe paths during secret discovery (#7797)
  Add @DOsinga as CODEOWNER for documentation (#7799)
  feat: Add summarize tool for deterministic reads (#7054)
  fix(api): use camelCase in CallToolResponse and add type discriminators to ContentBlock (#7487)
  feat: ACP providers for claude code and codex (#6605)
  chore(deps): bump express-rate-limit from 8.2.1 to 8.3.0 in /evals/open-model-gym/mcp-harness (#7703)
  feat(openai): capture reasoning summaries from responses API (#7375)
  Fix some dependencies (#7794)
  fix: improve keyring availability error detection (#7766)
  feat: add MiniMax provider with Anthropic-compatible API (#7640)
  feat: add Tensorix as a declarative provider (#7712)
  fix(security): remove insecure default secret from GOOSE_EXTERNAL_BACKEND (#7783)
  refactor: Convert Tanzu provider to declarative JSON config (#7124)
  replaces https://github.com/block/goose/pull/7340/changes (#7786)
  feat(summon): make skill supporting files individually loadable via load() (#7583)
  Keep toast open on failed extension (#7771)
  fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335)
  fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571)
  fix: write to real file if config.yaml is symlink (#7669)
  fix: preserve pairings when stopping gateway (#7733)
  ...
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.

6 participants