Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add stefanoginella/aicontainer/plugin install aicontainerWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/stefanoginella/aicontainer/setup)<a href="https://agentmods.dev/skills/stefanoginella/aicontainer/setup"><img src="https://agentmods.dev/badge/skills/stefanoginella/aicontainer/setup.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00029 | $0.10325 |
| Opus 5 | $0.00015 | $0.05163 |
| Sonnet 5 | $0.00006 | $0.02065 |
| Haiku 4.5 | $0.00003 | $0.01033 |
Grade C, and why
setup scanned grade C with 3 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
boot verb.** Image builds run as root, so aic treats every project Dockerfile Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
| `~/.claude/settings.json` | model, effort, editor mode, theme, plugins/marketplaces, MCP servers, verbosity… | Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- Host service reachable: `aic run curl -sS host.docker.internal:5432` (or How it starts
The opening of the file, as written. The whole thing — 645 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Set up aicontainer in a project
Your job is to take a project from "no sandbox" to "the AI agent runs behind the aicontainer devcontainer boundary, configured for this project's stack." You detect the stack, sanity-check that a Linux devcontainer is even the right tool, propose a concrete customization plan, and — once the user approves — apply it.
aicontainer's whole point is letting Claude Code / Codex / OpenCode run with
permissions skipped without handing a prompt-injected dependency your real
$HOME, .env, SSH keys, or gh token. Good setup is what makes that sandbox
actually usable for the project — a Python repo needs a writable .venv, an
agent that uses go-to-definition needs a language server on PATH, a Postgres
app needs the DB reachable. That per-project wiring is the work here.
The other half is the person: their tool settings, prompt, aliases, and statusline. Some of that is seeded automatically, some is deliberately dropped, and some needs an explicit opt-in they'd never guess at. Step 6 walks them through it — a sandbox the user can't stand working in doesn't get used.
Golden rules (read first — they shape everything below)
These come straight from how aicontainer is designed; violating them creates work
that silently gets wiped or breaks aic sync.
- Run
aicfrom the host, never from inside the container. Setup happens before (or outside) the sandbox. If you detect you're inside an aicontainer already (see Step 0), stop and tell the user to run this from a host terminal —.devcontainer/is mounted read-only in the sandbox by design. - Never hand-edit
.devcontainer/devcontainer.jsonor.devcontainer/docker-compose.yml. They are template-managed:aic initwrites them andaic syncoverwrites them (only theAIC_TOOLS/AIC_SHELLchoices survive). All per-project customization goes in the project-owned files instead (listed in Step 5). Edits to the managed files get reset on the next sync. - All customization lives in project-owned files that
aic syncnever touches:Dockerfile.project,docker-compose.override.yml,chown-paths,post-create.project.sh,vscode-extensions,vscode-settings.json,firewall-allowlist,shell-rc.zsh,p10k.zsh,statusline.{sh,mjs,js,py}. These are opt-in by presence. aic rebuildis the verb that builds —aic upis not.aic upruns a plaindevcontainer up, and the managed pull-mode Compose setspull_policy: missing: when the resolved image tag is already cached, Compose reuses it and never runs yourDockerfile.project. The stack comes up looking healthy on the plain base image, with every baked tool missing and every named volume stillroot:root.aic rebuildadds--remove-existing-container --build-no-cache, which is what actually builds. So: if the plan writes aDockerfile.project, the first boot isaic rebuild, and so is every boot after you edit it.- Host-boundary trust is the user's to grant — you can't, and shouldn't. A
Dockerfile.project(or an added mount, a protected env key, Docker socket exposure) makesaic validate/up/rebuildfail closed until the human runsaic trust, which requires a TTY and so cannot run from your Bash tool. Hand it to them; never route around it with--allow-unsafe. Trust binds to an exact config hash, so any later edit todocker-compose.override.ymlorDockerfile.projectrevokes it — settle the config completely before you ask (Step 8). - Show the plan, then apply. Detect and confirm first, present the full plan,
get a yes, then write files and run
aic init/aic sync. Confirm before the first boot — it pulls or builds a multi-gigabyte image and can take minutes — but once the user says go, drive it yourself: verify the container actually boots and fix what's broken (Step 9). Don't just hand back a command and hope.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 645 lines · 29 tokens per session scan C 005efe6ccce0
setup is a skill published in the GitHub repository stefanoginella/aicontainer (20 stars, last pushed today), licensed MIT. It adds 29 tokens to every session and 10,325 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it C with 3 findings (asks for root, reads agent configuration directories, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
agentbox-info
Spin up isolated sandboxes ("boxes") for coding agents, run them in parallel, queue background runs with -i, and push commits safely through the host relay. Use when the user wants to run Claude Code / Codex / OpenCode in a sandbox, start more boxes, attach to a running box, or otherwise operate the agentbox CLI on…
agentbox-setup
Generate an agentbox.yaml for the current AgentBox workspace. Invoke when the user opens a sandbox without an agentbox.yaml or asks to (re)configure one.
agentbox
Fork the current agent session into a new VM or local Docker container with all the project files, agent settings and session teleported into.
docker-sandbox
Create, manage, and execute agent tools (claude, codex) inside Docker sandboxes for isolated code execution. Use when running agent loops, spawning tool subprocesses, or any task requiring process isolation. Triggers on "sandbox", "isolated execution", "docker sandbox", "safe agent execution", or when working on agent…
04-security
本 SKILL 提供 Dify 平台的安全实践和部署运维完整指南,帮助开发者和运维人员构建安全、稳定、高性能的生产环境。.
changelog-entry
Add a new entry to CHANGELOG.yml under the current unreleased version (or create the version block if needed), then regenerate documentation. Use when the user says things like "add a changelog entry", "log this fix in the changelog", or "/changelog-entry".