Description
~/.config/deva/<agent> doubles as agent home (default_config_home_for_agent, deva.sh:381) while deva.sh:4141 blanket-mounts ~/.config/deva into every container. Same host files end up visible at two container paths. Agent homes are state, not config.
Type
Details
Today both mechanisms fire at once: config-root mode rehomes ~/.config/deva/claude/.claude to container $HOME/.claude, and the blanket mount exposes the same files under ~/.config/deva/claude/ inside the container. Agent writes through one alias, tools read the other. It also makes ~/.config/deva impossible to treat as pure deva config for wholesale mounting.
Proposed contract:
Migration: accept the old layout one release with a deprecation warning, then drop. Settle this before the bun port hardens the current layout.
Related Files
- deva.sh (default_config_home_for_agent, resolve_config_base, blanket mount at 4141)
- docs, README
Test Plan
Description
~/.config/deva/<agent>doubles as agent home (default_config_home_for_agent, deva.sh:381) while deva.sh:4141 blanket-mounts~/.config/devainto every container. Same host files end up visible at two container paths. Agent homes are state, not config.Type
Details
Today both mechanisms fire at once: config-root mode rehomes
~/.config/deva/claude/.claudeto container$HOME/.claude, and the blanket mount exposes the same files under~/.config/deva/claude/inside the container. Agent writes through one alias, tools read the other. It also makes~/.config/devaimpossible to treat as pure deva config for wholesale mounting.Proposed contract:
~/.config/deva/— deva's own config, auth creds, cloak-profile. Mountable wholesale, exactly what line 4141 wants.~/.local/share/deva/<agent>/— agent homes/state. Intersects the accounts/ scoping from feat: export DEVA_AUTH_TAG for in-container account identity #497; decide both at once.Migration: accept the old layout one release with a deprecation warning, then drop. Settle this before the bun port hardens the current layout.
Related Files
Test Plan