Classic confinement for Goose

  • name: goose

  • description:
    goose is an open source, extensible AI agent that goes beyond code suggestions - it installs, executes, edits, and tests with any LLM.

    This snap bundles both interfaces from the same release:

    • goose - the Electron desktop application
    • goose.cli - the goose command line interface

    Because goose runs host toolchains and arbitrary developer commands, this snap uses classic confinement to operate with full host access.

  • snapcraft: goose-snap/snap/snapcraft.yaml at main · gabelluardo/goose-snap · GitHub

  • upstream: github.com/gabelluardo/goose-snap

  • upstream-relation: I stepped up as official maintainer for the snap package, you can see the discussion here. The intention is to merge the recipe upstream as it gets traction.

  • supported-category: IDEs, orchestration agents/software for running workloads on systems without traditional users where the systems are otherwise managed outside of the agent

  • reasoning: goose must execute arbitrary host-installed developer tools and project scripts. Available strict interfaces provide only scoped file, socket, or process access; none permits general execution of host binaries. Classic confinement is therefore required.

I understand that strict confinement is generally preferred over classic.

I’ve tried the existing interfaces to make the snap to work under strict confinement.

Note that snappy-debug can be used to identify possible required interfaces. See https://snapcraft.io/docs/debug-snaps for more information.

This request has been added to the queue for review by the @reviewers team.

Can you elaborate how exactly your app is used on systems without any users or how it orchestrates the setup of that user-less system exactly ?

(note that a supported category is mandatory to even be considered for classic confinement)

Actually I wasn’t sure on which category to pick, let’s say what goose does it’s equivalent of what you’d do with opencode or codex for example. It spawns, runs and orchestrates unsupervised (sub)agents to perform actions independently from the user.

Hello @gabelluardo :slight_smile:

I am not sure if goose actually fits into one of the supported categories, and this is a strict requirement for approving classic confinement. In addition, classic confinement is reserved for mature, well-known applications published by mature, well-known entities. As of today, I believe that goose doesn’t meet these criteria because of the following reasons:

  • The project seems to be very fresh, according to the upstream repository.
  • The projects seems to have little/none community around according to upstream repository (contributors, issues, PRs, etc.).
  • I could not find evidences that the project has a strong enough user base currently.

If you need further assistance, feel free to reach out!

Hi @yomonokio,

Thank you for the detailed response!

I notice I posted the wrong upstream link, it should have been:

upstream: github.com/aaif-goose/goose

And maybe I can add a bit of more context here.

It’s right that goose is a very young project and doesn’t have much traction at the moment, but it’s maintained by the AAIF, which is part of the Linux Foundation, and maintains also the MCP and AGENTS.md standards.

We also use the goose agent for the Context Aware Desktop project, and as it’s used internally in one of our products, we do review it, and we should be safe in security terms. For clarity, as the agent is vendored we wouldn’t need a separate snap for the CAD project, but I’m mostly using the goose.desktop for testing components and sometimes generating draft code or docs.

Maybe the IDEs category is the nearest fit, for sure it matches some antigravity and opencode features.

Hey folks!

I believe Goose fits under the new category agent/assistant that runs arbitrary user-directed code and needs to reach files and programs that aren’t known at build time that will be added as per Add agents/assistants to classic confinement supported categories by jslarraz · Pull Request #412 · canonical/snap-docs · GitHub. Additionally, I believe that Goose has become quite well-known over the past month and therefore I think it qualifies for classic confinement.

The main question now is how we can vet the publisher in this case. @gabelluardo could you please clarify if you already got push permissions to the upstream project?

Thanks

Hi @jslarraz,

I don’t have push permissions to upstream yet, since we agreed to start to publish in a different repo and then merge upstream (and ask for a transfer to them) as the recipe became stable. I understood this is what we usually do with third parties.

Hey @gabelluardo

In that case, as per @jnsgruk comment in Classic confinement request for pi-agent - #6 by jnsgruk, I think it would be a good idea to publish the snap under the ubuntu account rather than your personal one.

@zyga would you be able to help with this again?

Thanks!

1 Like

Hi @jslarraz, any update on this?

Ofc I’m fine to publish this under the ubuntu account :slight_smile:

Thanks!

Hey @gabelluardo

Sorry if I somehow set the wrong expectations. From the @reviewers point of view, we are now waiting for the snap to be published under the Ubuntu account before granting classic confinement.

Transfer requests are handled by the @store folks, so you may need to open a separate request for that: transfer-ownership - snapcraft.io. I’m not sure whether there are any additional requirements for the transfer to be done.

1 Like

Hi @jslarraz,

Thank you for the clarification!

In this case I’m opening a separate request for the transfer, and I’ll report back here when we are ready.

Thanks :slight_smile: