6 Commits

Author SHA1 Message Date
dm 03ea722c4c Add threat model section to README (#33)
Addresses #29 by explaining what threats the devcontainer protects
against, the intended development workflow, and SSH agent forwarding
semantics. Also adds SSH agent to the Security Model's "Not sandboxed"
list.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 02:02:35 -04:00
Akshith G 5a2b92a790 feat: add non-interactive auth via CLAUDE_CODE_OAUTH_TOKEN (#32)
* feat: add non-interactive auth via CLAUDE_CODE_OAUTH_TOKEN

Bypass the interactive onboarding wizard when CLAUDE_CODE_OAUTH_TOKEN is
set. On container create, post_install.py runs `claude -p` to populate
auth state and sets hasCompletedOnboarding so the TUI starts without the
login wizard.

Workaround for https://github.com/anthropics/claude-code/issues/8938.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use remoteEnv instead of containerEnv for secrets

containerEnv bakes values into the image as ENV instructions, visible
in docker inspect/history. remoteEnv is set at runtime only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: improve error handling in onboarding bypass

- Handle timeout as expected (claude -p writes config before API call)
- Catch FileNotFoundError/OSError if claude is not installed
- Check returncode explicitly instead of dead CalledProcessError catch
- Guard on ~/.claude.json existence before writing onboarding flag
- Replace contextlib.suppress with explicit try/except that logs
- Update module docstring and README wording

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 06:36:47 -07:00
rpgdev 6dc4b4f0cb feat: add devc destroy command and standardize volume naming (#31)
Add `devc destroy [-f]` to cleanly remove all Docker resources
(container, volumes, images) for a project. Includes resource
discovery via container inspection, itemized pre-deletion summary,
y/N confirmation prompt with --force bypass, running container
warning, and idempotent no-op when no resources exist.

Rename volume prefix from claude-code-* to devc-* and include
workspace folder name for self-identifying volumes
(e.g., devc-myproject-config-{devcontainerId}).

Co-authored-by: Disconnect3d <dominik.b.czarnota@gmail.com>
2026-03-10 12:38:07 +01:00
dm 8256ebba76 Add devc sync to copy devcontainer sessions to host (#27)
* Add `devc sync` to copy devcontainer sessions to host for /insights

Claude Code's /insights reads sessions from ~/.claude/projects/ on
the host, but devcontainer sessions live inside container volumes.
This adds a `devc sync [project]` command that copies them over so
/insights can analyze devcontainer work alongside local sessions.

- Auto-discovers devcontainers via devcontainer.local_folder label
- Works on both running and stopped containers (docker cp only)
- Reads CLAUDE_CONFIG_DIR from container env for non-standard paths
- Incremental: only copies new/updated files
- Optional project name filter (case-insensitive substring)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add devc sync to README

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add safety prompt to `devc sync` before copying from containers

Warns users that sync copies files from devcontainers to the host
filesystem. Adds --trusted flag to skip the prompt for automation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 09:31:45 +01:00
Dan Guido 84a3aa4fd8 Document file sharing options and missing CLI commands (#22)
Add File Sharing section covering VS Code drag-and-drop and devc mount.
Add exec, upgrade, and mount to the CLI commands table. Expand the
Container Details table with volume mount paths and host mounts.

Closes #10

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 19:34:08 -05:00
Dan Guido 91ff6f7c0c Initial commit 2026-01-29 20:13:16 -05:00