Sandbox with Docker on Linux
Rootless Docker lets you run kipp•punkt inside a container with filesystem isolation, no root access required. This page covers setup for Linux.
Prerequisites
Section titled “Prerequisites”- A Linux system with systemd
- Docker Engine (rootless setup, see below)
- A bot GitHub account with
GH_TOKENready - A kipp•punkt license key (
KIPPPUNKT_LICENSE). Optional, only needed for premium features
Set up rootless Docker
Section titled “Set up rootless Docker”1. Install dependencies
Section titled “1. Install dependencies”sudo apt install uidmap dbus-user-session2. Configure subordinate UIDs and GIDs
Section titled “2. Configure subordinate UIDs and GIDs”sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER3. Install the rootless daemon
Section titled “3. Install the rootless daemon”dockerd-rootless-setuptool.sh installIf the setup tool is not on your PATH, see the Docker rootless documentation.
4. Set the Docker socket
Section titled “4. Set the Docker socket”Add this to your shell profile (e.g. ~/.bashrc):
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock5. Enable persistence
Section titled “5. Enable persistence”systemctl --user enable dockerloginctl enable-linger $USERThis keeps the rootless daemon running after you log out.
Build the container image
Section titled “Build the container image”Create a Dockerfile in your project:
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \ ca-certificates curl git gnupg nodejs npm ripgrep jq \ && rm -rf /var/lib/apt/lists/*
# Install GitHub CLIRUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \ | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \ | tee /etc/apt/sources.list.d/github-cli-stable.list > /dev/null \ && apt-get update && apt-get install -y gh
# Install kipp•punkt and the AI harness (e.g. Claude Code)RUN npm install -g @kipppunkt/agent @anthropic-ai/claude-code
WORKDIR /workspaceBuild it:
docker build -t kipppunkt-sandbox:latest .Adapt the harness install line if you use a different agent (e.g. Codex, OpenCode).
Log in to your AI harness
Section titled “Log in to your AI harness”Create a named container and log in interactively. This persists credentials inside the container so kipp•punkt can use them on subsequent runs.
docker create --name kipppunkt \ --cap-drop ALL \ --security-opt no-new-privileges \ -v "$(pwd)":/workspace:rw \ -e GH_TOKEN="$GH_TOKEN" \ -e KIPPPUNKT_LICENSE="$KIPPPUNKT_LICENSE" \ kipppunkt-sandbox:latest \ kipppunkt-agent start --command "claude -p {prompt} --dangerously-skip-permissions"Run the docker create command from your project directory. Then start the container in interactive mode and follow your harness’s login flow:
docker start -ai kipppunktOnce login succeeds, stop the container with Ctrl+C. The credentials are now stored inside the named container.
Launch kipp•punkt
Section titled “Launch kipp•punkt”Start the container:
docker start kipppunktTo follow logs:
docker logs -f kipppunktStop with:
docker stop kipppunktWhat the flags do
Section titled “What the flags do”| Flag | Effect |
|---|---|
--cap-drop ALL | Removes all Linux capabilities from the container. |
--security-opt no-new-privileges | Prevents any process inside the container from gaining additional privileges. |
-v "$(pwd)":/workspace:rw | Mounts your project directory as the only writable path. |
Environment variables
Section titled “Environment variables”| Variable | Purpose |
|---|---|
GH_TOKEN | Authenticates the bot GitHub account for PR operations. |
KIPPPUNKT_LICENSE | Activates your kipp•punkt license inside the container. Optional, only needed for premium features. |
Both the orchestrator and the AI harness agent run inside the container. The host only provides the mounted project directory and forwarded environment variables.
References
Section titled “References”- Docker rootless mode documentation
- Sandbox your GitHub Copilot CLI on Linux (the article that inspired this approach)