Sign inSign up

sbx/vibe-kit

Verified Publisher

By Docker, Inc

Updated 13 days ago

Mistral AI's open source coding agent, with its API key injected by the sandbox proxy

Sandbox Kit
0

462

sbx/vibe-kit repository overview

Digest

sha256:812d78fdcdc4…

Size

2 Bytes

Schema

v2

Pushed

13 days ago

Specificationspec.yaml

SANDBOX KIT
REQUIRES SECRETS

Mistral AI's open source coding agent, with its API key injected by the sandbox proxy


Arguments
NameRequiredDefaultDescription
agentOptionalauto-approve

Vibe agent to start: a builtin (ask, plan, accept-edits, auto-approve) or a custom agent declared in ~/.vibe/agents/NAME.toml.


Credentials
NameServiceRequiredDescription
MISTRAL_API_KEYmistralOptionalMistral API key (https://console.mistral.ai/api-keys)

Network Egress

api.mistral.ai:443

chat.mistral.ai:443

console.mistral.ai:443

experiments.mistral.services:443

Run in a Sandbox

sbx run sbx/vibe-kit:latest

Make sure you have docker sbx installed

Run the following command to install sbx on your machine.

macOS
brew install docker/tap/sbx
Windows
winget install Docker.sbx
Learn more about docker sbx

Mistral Vibe

A standalone Docker Sandboxes kit for Mistral Vibe, Mistral AI's open source coding agent. It runs the vibe CLI inside a sandbox with the workspace pre-trusted, tool approval pre-granted, and the Mistral API key held by the sandbox proxy rather than by the container.

Usage

Use the published kit:

sbx run --kit "docker.io/sbx/vibe-kit:latest" vibe

Or load it directly from this repository:

sbx run --kit "git+https://github.com/docker/sbx-kits-contrib.git#dir=vibe" vibe

Or use a local clone:

sbx run --kit ./vibe/ vibe

Authentication

Get a key from the Mistral console, then store it on the host under the mistral service — the name the kit's credentials block declares:

printf '%s' "$MISTRAL_API_KEY" | sbx secret set mistral

Piping the key in keeps it out of your shell history and out of the process table, where -t/--token would put it.

sbx secret set mistral on its own is equally valid — it prompts for the value on a TTY. Either way the secret is stored once on the host; sbx also offers to configure the credential on first launch if none is stored.

Then launch:

sbx run --kit "docker.io/sbx/vibe-kit:latest" vibe

The container only ever sees MISTRAL_API_KEY set to a proxy sentinel. The real key is substituted by the proxy on requests to api.mistral.ai, chat.mistral.ai and console.mistral.ai, and on no other host — so a prompt injection that talks the agent into exfiltrating the variable exfiltrates the sentinel.

Agent profile

Vibe's agent profile decides which tool calls need confirmation. The kit starts auto-approve, on the same reasoning as the crush and grok kits: the sandbox is the security boundary, so a confirmation prompt inside it buys little and blocks non-interactive use.

Pick another one at install time:

sbx run --kit "docker.io/sbx/vibe-kit:latest" --kit-arg agent=plan vibe

The value is any builtin (ask, plan, accept-edits, auto-approve) or a custom agent declared in ~/.vibe/agents/NAME.toml.

Persistence

~/.vibe is a 1 GB volume, so config.toml, sessions, logs, custom agents and .env survive recreating a sandbox of the same name. .env is Vibe's own key store; the environment takes precedence over it, so the proxy-managed MISTRAL_API_KEY is what Vibe uses regardless of what lands there. The volume is mounted root-owned, which is why a startup command hands it back to the agent user before Vibe writes to it.

Network

The allow list is the four hosts Vibe reaches for, and nothing else:

HostWhy
api.mistral.aiInference API.
chat.mistral.aiVibe's own base URL; also where the organization's admin-managed configuration is read at startup.
console.mistral.aiThe /whoami account and plan lookup, and the browser-auth base URL.
experiments.mistral.servicesFeature-flag / experiments service. Only reached when telemetry is enabled, which this kit disables.

Anything else your work needs — a package registry, a git host — has to be added to permissions.network.allow or allowed on the host with sbx policy allow network.

Telemetry and Vibe's self-update are both switched off through VIBE_ENABLE_TELEMETRY / VIBE_ENABLE_AUTO_UPDATE, so a run is reproducible and needs no egress to PyPI: the version is whatever the image ships.

Image

The companion image, docker.io/sbx/vibe-image, is built from docker/sandbox-templates:shell-docker and installs mistral-vibe from PyPI with uv tool install. Pin a release at build time with --build-arg VIBE_VERSION=2.25.0; the default, latest, is what CI's nightly rebuild tracks.

This listing is prepared by Docker. All third-party product names, logos, and trademarks are the property of their respective owners and are used solely for identification. Docker claims no interest in those marks, and no affiliation, sponsorship, or endorsement is implied.