You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+58Lines changed: 58 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,19 @@
1
1
This file provides guidance to codex, Claude Code when working with code in this repository.
2
2
3
+
## Deva Architecture: Container-Based Agent Sandboxing
4
+
5
+
**CRITICAL DESIGN PATTERN**: Deva purposely runs ALL agents inside Docker containers. The container IS the sandbox.
6
+
7
+
- Each agent (claude, codex, gemini) runs in isolated container environment
8
+
- Agent internal sandboxes/permission systems are DISABLED:
9
+
- claude: `--dangerously-skip-permissions`
10
+
- gemini: `--yolo` flag
11
+
- codex: equivalent unrestricted mode
12
+
- Container provides security boundary instead of agent-level prompts
13
+
- Result: No interactive permission prompts while maintaining isolation
14
+
15
+
**Why**: Avoids permission fatigue in trusted workspaces while keeping agents containerized for safety.
16
+
3
17
## We're following Issue-Based Development (IBD) workflow
4
18
1. Before running any Git/GitHub CLI `Bash` command (`git commit`, `gh issue create`, `gh pr create`, etc.), open the corresponding file in @workflows to review required steps.
5
19
2. Always apply the exact templates or conventions from the following files:
@@ -121,6 +135,50 @@ Model aliases are automatically converted to appropriate formats (API model name
121
135
- Requires explicit confirmation (`yes`) to proceed
122
136
- Protects users from accidentally giving Claude access to all personal files
123
137
138
+
**Docker Socket Warning** (SECURITY-SENSITIVE):
139
+
By default, `/var/run/docker.sock` is auto-mounted if present. This grants full Docker API access to the container - effectively equivalent to root on the host. The "container as sandbox" model is weakened when Docker socket is mounted.
140
+
141
+
Implications:
142
+
- Agent can start/stop any container on host
143
+
- Agent can mount any host path into new containers
144
+
- Agent can escape to host via privileged container creation
145
+
146
+
Mitigations:
147
+
- Use `--no-docker` flag to disable auto-mount
148
+
- Set `DEVA_NO_DOCKER=1` environment variable
149
+
- Only mount when Docker-in-Docker workflows are required
150
+
151
+
## Bridges (privileged)
152
+
153
+
Deva's container IS the sandbox. Bridges punch controlled holes back to the host for specific integrations. Each bridge has TWO components: host-side and container-side.
Copy file name to clipboardExpand all lines: CLAUDE.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,17 @@
2
2
3
3
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
4
5
+
## Deva Architecture: Container-Based Agent Sandboxing
6
+
7
+
**CRITICAL DESIGN PATTERN**: Deva purposely runs ALL agents inside Docker containers. The container IS the sandbox.
8
+
9
+
- Each agent (claude, codex, gemini) runs in isolated container environment
10
+
- Agent internal sandboxes/permission systems are DISABLED (e.g., claude --dangerously-skip-permissions, GEMINI_SANDBOX=false)
11
+
- Container provides security boundary instead of agent-level prompts
12
+
- Result: No interactive permission prompts while maintaining isolation
13
+
14
+
**Why**: Avoids permission fatigue in trusted workspaces while keeping agents containerized for safety.
15
+
5
16
## We're following Issue-Based Development (IBD) workflow
6
17
1. Before running any Git/GitHub CLI `Bash` command (`git commit`, `gh issue create`, `gh pr create`, etc.), open the corresponding file in @workflows to review required steps.
7
18
2. Always apply the exact templates or conventions from the following files:
Copy file name to clipboardExpand all lines: DEV-LOGS.md
+18Lines changed: 18 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,6 +14,24 @@
14
14
- Reference issue numbers in the format `#<issue-number>` for easy linking.
15
15
16
16
17
+
# [2026-01-07] Dev Log: Fix version-upgrade build resilience
18
+
- Why: `make versions-up` exited 56 during GitHub API changelog fetch - GitHub API 403 rate limit (60/hour) from unauthenticated curl
19
+
- What:
20
+
- Changed `fetch_github_releases()` and `fetch_recent_github_releases()` in `scripts/release-utils.sh` from `curl` to `gh api` for authenticated requests
21
+
- All changelog fetch functions now fail gracefully with `{ echo "(fetch failed)"; return 0; }` instead of `|| return` (was causing `set -e` script abort)
22
+
- Added fallback in `load_versions()` - network fetch failure uses current image version instead of empty string
23
+
- Added pre-build version check in `scripts/version-upgrade.sh` - warns about missing versions but proceeds with build
24
+
- Result: Build script resilient to transient network failures and GitHub rate limits. Changelog display is best-effort, won't block builds.
# [2025-11-27] Dev Log: Docker-in-Docker auto-mount support
31
+
- Why: Common dev workflow need - testing containers, building images, CI/CD simulation inside deva environments
32
+
- What: Auto-mount Docker socket (`/var/run/docker.sock`) by default with graceful detection, opt-out via `--no-docker` flag or `DEVA_NO_DOCKER=1`, quick permission fix (chmod 666) for deva user access
33
+
- Result: DinD works out-of-box on Linux/macOS/WSL2, no manual socket mounting needed, aligns with YOLO philosophy (make it work, container is the boundary)
34
+
17
35
# [2025-10-26] Dev Log: Custom credential files via --auth-with
18
36
- Why: Users have multiple credential files, needed direct path support beyond predefined auth methods
19
37
- What: `--auth-with /path/to/creds.json` now works, auto-backup existing credentials, workspace session tracking in `~/.config/deva/sessions/*.json`
0 commit comments