# Agent modes

An agent's mode decides two things: who owns the containers it works in, and who chooses which container it uses. There are three modes.

- **Connect.** People bring their own Wire container and choose where your agent goes. For agents that add to what someone already keeps, like a memory for their coding tools.
- **Bundle.** Each person gets a container that comes with your app, and your app decides which one. For products that run on Wire, where people should never have to think about containers.
- **Provision.** Your organization owns the containers and pays for them. No one signs in to Wire. For internal agents, or a product that keeps one container per customer.

| | Connect | Bundle | Provision |
|---|---|---|---|
| Who owns the container | The person | The person | Your organization |
| Who chooses it | The person, on Wire's connect screen | Your app | Your app, with an org API key |
| Which containers your agent can use | A new one, or any of theirs that another agent does not manage | A new one, or one that has or had your agent, unless the person removed it | Only the ones it created |
| Who pays | The person's organization, unless you sponsor | The person's organization, unless you sponsor | Your organization |
| Can change to | Bundle | Connect | Nothing |

In Connect and Bundle the container belongs to the person. They can export it, disconnect your agent, or delete it.

## Connect

Use Connect when people bring a container they already have, such as a memory they use across their AI apps. When someone connects your agent, Wire asks them to choose a new container or one of their own.

## Bundle

Use Bundle when each person gets a container that comes with your app. Wire never asks them to choose. The first time they connect or sign in, Wire creates a new container after they approve. Every later sign-in and connect lands in the same one.

A Bundle agent can only use a new container, or one that has or had your agent installed. It can never be installed into a container the person made for something else, or go back to one they removed it from. Wire enforces that on every approval, not only by hiding the choice.

When a person has more than one container with your agent, Wire uses the one your app is connected to, or else the one your agent used most recently. A container they can no longer use, for example one in an organization they left, is skipped. To start a fresh container, or to use a specific one, pass `container` when your server signs them in: see [choose the container](/build/sdk/sign-in-with-wire/#choose-the-container-bundle-agents). An AI app connecting your agent always gets the default.

People never see the word "Bundle". They see what your agent stores and what it can do, as with any agent.

## Provision

Use Provision when your organization owns the containers and pays for them, and no one signs in to Wire. See [Provision mode](/build/sdk/provision-mode/).

## Change the mode

Open your agent in the dashboard and choose a mode under **Settings**. Connect and Bundle can be switched either way. A change applies to the next approval: installs and connections that exist keep working as they are, and containers your agent was installed in while it was a Connect agent count as containers it has.

An agent cannot move to or from Provision, because ownership and billing differ. Choose it when you create the agent.

## Related

- [Sign in with Wire](/build/sdk/sign-in-with-wire/): sign people in to your app with their Wire account.
- [Connect flows](/build/sdk/connect-flows/): how people connect an agent from an AI app or a browser.
- [Provision mode](/build/sdk/provision-mode/): containers your organization owns.