# Add to your Claude Code skills
git clone https://github.com/tommy0103/blackholeGuides for using ai agents skills like blackhole.
See how blackhole compares with popular alternatives.
blackhole is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by tommy0103. A blackhole for your Claude Code. It has 56 GitHub stars.
blackhole's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/tommy0103/blackhole" and add it to your Claude Code skills directory (see the Installation section above).
blackhole is primarily written in Shell. It is open-source under tommy0103 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh blackhole against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
English · 中文
Run Claude Code inside an isolated Colima VM container on macOS — exposing only the current project directory while keeping virtiofs live sync, persistent login volumes, and clipboard image paste.
Running claude directly on a macOS host exposes two things at once: your local filesystem (~/.ssh, cloud credentials, Docker sockets, sibling repositories) and your host environment fingerprint (macOS hardware identifiers, locale/timezone settings, host username, environment variables, and direct network interfaces if a proxy drops).
Blackhole replaces the host claude command with a pure Bash launcher (~/.local/bin/claude -> bin/blackhole). Claude Code is never installed on your macOS host — the actual @anthropic-ai/claude-code package lives exclusively inside the Colima VM's Docker image. When you type claude in a project directory, the host symlink intercepts the command and starts an ephemeral Linux container inside your Colima VM so Claude Code only ever sees a generic Linux environment and controlled network egress:
$PWD is mounted at /workspace over Colima's virtiofs. Host $HOME, SSH agents, and Docker sockets are never mounted.--hostname blackhole, a remapped node user matching /workspace UID/GID, and a strict environment variable allowlist (TERM, COLORTERM, NO_COLOR, and optional API keys) — hiding macOS host telemetry, usernames, and environment variables.net ipv6 off, guest iptables airgap (net off), and a fail-close proxy watcher (net-watch) with a companion heartbeat guard ensure VMs are immediately cut off if your host TUN proxy drops, preventing accidental direct-connection IP leaks.blackhole-claude-home-<profile>), with SessionStart / SessionEnd hooks tracking profile <-> session <-> host path.$TMPDIR are mirrored read-only at identical paths inside the container, while a persistent magenta ⬤ BLACKHOLE status line badge makes isolated sessions unmistakable.Tip: Let an agent drive it. You do not need to memorize every subcommand below. Point your host coding agent at this repository (see
AGENTS.md) and let it handle setup, Colima profile binding,.blackhole/Dockerfiletool customization,net-watchprotection, and session exports or migrations on your behalf.
Run claude inside any project directory under $HOME:
$ cd ~/Code/my-app
$ claude
⬤ BLACKHOLE Colima VM isolated session · default
/Users/you/Code/my-app (only this directory is mounted)
All standard arguments pass straight through to Claude Code inside the VM:
claude -p "explain this repository"
claude --resume
Check launcher protection, image state, and active containers from another terminal:
$ blackhole status
Colima profile: default
Claude launcher: protected (/Users/you/.local/bin/claude)
Colima: running
Image: blackhole-claude:latest
Image status: built
Claude Code: 1.0.x (Claude Code)
Image ID: sha256:...
Config volume: blackhole-claude-home-default
Active sessions:
blackhole-default-48210 /Users/you/Code/my-app
Bind a project directory to a dedicated Colima VM profile (inherited by subdirectories, stored in ~/.blackhole/bindings/ outside the repo):
$ cd ~/Code/heavy-repo
$ blackhole bind work
blackhole: bound /Users/you/Code/heavy-repo -> profile 'work'
Inspect profiles, recorded sessions across all running VMs, and resume any session by ID prefix from anywhere:
$ blackhole profiles
PROFILE STATUS MEMORY BLACKHOLE PROJECTS SESSIONS LAST USED
default Running 8GiB yes 3 12 2026-11-08 11:20
work Running 16GiB yes 1 4 2026-11-08 12:05
scratch Stopped 4GiB - - - -
$ blackhole sessions
PROFILE SESSION PATH STARTED LAST ACTIVE STATUS
work 89e4f9ec-8960-4175-9bb0-4bbea4780fa9 /Users/you/Code/heavy-repo 2026-11-08 10:12 2026-11-08 12:05 ended
$ blackhole resume 89e4
blackhole: resuming 89e4f9ec-8960-4175-9bb0-4bbea4780fa9 on profile 'work' in /Users/you/Code/heavy-repo
Open an interactive debugging shell in the exact same isolated container environment:
blackhole shell
Requires macOS, Colima, and the Docker CLI (brew install colima docker). You do not need to install Claude Code or Node.js on the host (blackhole setup installs @anthropic-ai/claude-code inside the VM image). Start your Colima VM with Apple Virtualization (vz) and virtiofs for near-native filesystem performance:
colima start --vm-type vz --mount-type virtiofs --cpu 4 --memory 8 --disk 60
Build the base image and install the claude and blackhole symlinks (defaults to ~/.local/bin):
git clone https://github.com/tommy0103/blackhole.git ~/Code/blackhole
cd ~/Code/blackhole
./bin/blackhole setup
./bin/blackhole install
Ensure ~/.local/bin precedes other binary directories in your PATH:
export PATH="$HOME/.local/bin:$PATH"
To install into another directory or replace an existing host claude binary:
./bin/blackhole install --prefix /opt/homebrew/bin --force
To uninstall, remove the symlinks (rm -f ~/.local/bin/claude ~/.local/bin/blackhole) and optionally remove ~/.blackhole, the blackhole-claude:latest image, and blackhole-claude-home-* Docker volumes.
| Command | Description |
|---|---|
claude [args...] |
Launch Claude Code inside the Colima container for $PWD |
blackhole setup [--claude-version VER] |
Build or rebuild the base image (and project image if .blackhole/Dockerfile exists) |
blackhole update [--claude-version VER] |
Alias for setup to rebuild with the latest (or specified) Claude Code version |
blackhole install [--prefix DIR] [--force] |
Symlink claude and blackhole into DIR (default ~/.local/bin) |
blackhole status |
Show profile, launcher protection, image ID, FUSE state, and active sessions |
blackhole shell |
Start an interactive bash shell inside the project's isolated container |
blackhole bind <profile> [dir] |
Bind a project directory (and its subdirectories) to a Colima profile |
blackhole bindings / blackhole unbind [dir] |
List directory bindings or remove a directory's binding |
blackhole profiles |
List all Colima profiles, VM status, memory, and recorded project/session counts |
blackhole projects |
List mapped projects (PROFILE, PATH, LAST USED, SESSIONS) across running VMs |
blackhole sessions |
List recorded sessions across running VMs with live active / ended / unknown status |
blackhole resume [--profile P] [--dry-run] <prefix> |
cd to the recorded host path and resume the matching session on its profile |
blackhole export [--profile P] [-o FILE] <prefix> |
Export a session JSONL transcript from the Docker volume to ~/.blackhole/sessions/<profile>/ |
blackhole export-watch start|status|stop |
Background daemon that atomically re-exports a session JSONL when its contents change |
blackhole net off|on|status [--all | --profile P] |
Toggle or inspect guest iptables outbound network airgap |
blackhole net ipv6 off|on|status [--all | --profile P] |
Disable or enable guest IPv6 via sysctl and ip6tables |
blackhole net-watch start|status|stop |
Fail-close proxy watcher that blocks VM networking when the host TUN/proxy drops |
blackhole clipboard start|status|stop|disable|enable |
Manage the host $TMPDIR screenshot mirror for terminal image paste |
blackhole signal send --file PATH (--data JSON | --message TEXT | --stdin) |
Atomically write a signal file from the host to wake blackhole-signal wait inside the container |
| Variable | Default | Description |
|---|---|---|
BLACKHOLE_COLIMA_PROFILE |
default (or bound profile) |
Override Colima profile selection (env > directory binding > default) |
BLACKHOLE_IMAGE |
blackhole-claude:latest |
Force a specific container image and bypass .blackhole/Dockerfile |
BLACKHOLE_HOME_VOLUME |
blackhole-claude-home-<profile> |
Override the Docker volume mounted at /home/node |
BLACKHOLE_STATE_DIR |
~/.blackhole |
Host directory for bindings, exported transcripts, clipboard mirror, and watcher state |
BLACKHOLE_CLIPBOARD |
1 |
Set to 0 to disable $TMPDIR image mirroring and container mounting for a session |
BLACKHOLE_FUSE |
0 |
Set to 1 to enable /dev/fuse inside the container (or touch .blackhole/fuse) |
BLACKHOLE_ALLOW_BROAD_MOUNT |
0 |
Set to 1 to bypass the safety check blocking /, /Users, and $HOME |
ANTHROPIC_API_KEY |
(not set) | Passed through to the container only if exported on the host |
CLAUDE_CODE_OAUTH_TOKEN |
(not set) | Passed through to the container only if exported on the host |
NO_COLOR |
(not set) | Disable ANSI colors in the launch banner, status line, and shell prompt |
macOS Mach-O binaries under /opt/homebrew/bin cannot run inside a Linux VM. To give a project extra Linux CLI tools or build dependencies, create .blackhole/Dockerfile:
ARG BLACKHOLE_BASE=blackhole-claude:latest
FROM ${BLACKHOLE_BASE}
RUN apt-get up