Aisan — Development skill for Claude Code
Coding agents with everything in the box: zero network, zero credentials.
How to install Aisan
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open schuay/aisan and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Aisan does
Coding agents with everything in the box: zero network, zero credentials. Bubblewrap confinement plus credential-injecting egress proxies for Claude Code, Codex, and opencode.
Alternatives in Development
- CORS — Scan an endpoint for CORS misconfiguration — arbitrary-origin reflection, null-origin trust, credential exposu 4.5k ★
- Opencode Claude Auth — OpenCode plugin that uses your existing Claude Code credentials — no separate login needed 903 ★
- Agentsys — This automates everything else · 14 plugins · 43 agents · 30 skills · for Claude Code, OpenCode, Codex 655 ★
README
aisan
aisan runs a coding agent with everything in the box: the harness, its state, and your repo. Nothing else. The box has no network route and holds no credential. Model calls still work: each harness gets a host-side proxy that checks requests against an allowlist and attaches the real credential to traffic the box never sees.
python -m pip install aisan # or: uv tool install aisan
aisan claude /path/to/repo
That is a normal interactive Claude Code session (`aisan codex` and `aisan opencode` work the same way), with three differences:
- Zero credentials in the box.
~/.claude/.credentials.jsonis never mounted. The token the client sees is a per-box placeholder; the proxy drops it and attaches the host's real credential: the subscription login by default, or a static API key with--api-key. A test asserts from inside a real box that the credential file does not exist. - Zero network by default. The box gets its own network namespace with no
route off the machine. The one egress is a loopback relay to the model
proxy over a Unix socket.
--netopts back into host networking when a task needs it; credential files stay unmounted and model calls still pass through the authenticated proxy. - Selected filesystem slices. The repo is bound rw at its real absolute
path, system directories ro (
/usr,/etc; fresh/procand/dev), a tmpfs over$HOMEand/tmp, and nothing else unless a bind spec names it. Local stdio MCP servers declared on the host are started inside the box, where they inherit its filesystem, cleared environment, and network namespace; remote MCP declarations and their authentication state stay on the host.
Nothing on faith: `--explain`
Every launcher takes `--explain`: it prints the resolved profile and the exact Bubblewrap argv from the same `Box` object used to launch, then exits. Trimmed:
Related Skills
Narthex
Prompt-injection defenses for Claude Code. A PreToolUse Bash hook blocks compositional credential-exfiltration
Farhand
Remote hands for coding agents: an MCP server that runs OpenCode / Claude Code / Codex work on a remote host o
Claude Tools
The clean slate a fresh Claude Code should start from — clean context, locked credentials, guarded egress. Iso
Bashrc Credential Guard
Always check ~/.bashrc for credentials, API keys, passwords, and configuration values before asking user
Agent Decision
Show or set the decision engine used for routing - mode, provider, credentials and status. Never prints a cred
Axonflow Login
Save AxonFlow credentials locally — a Pro license token (AXON-...) for X-License-Token, or a self-hosted/Enter
Related Agents
Funnelfox Tokenization
FunnelFox tokenization specialist: PAN, payment tokens, network tokens, processor tokens, stored credentials,
Paf Reviewer
Runs one phone-a-friend relay or review command in the background and reports back a receipt plus the findings
Agent Of Empires
Claude Code, OpenCode, Mistral Vibe, Codex CLI, Gemini CLI Coding Agent Terminal Session manager via tmux and