Destination
dl <repo> recreate and dl <repo> restart work on a repo whose devcontainer.json has a relative initializeCommand, instead of dying before the container is touched.
Observed on the host, against blooop/devlaunch itself:
$ dl blooop/devlaunch recreate -- "claude --version"
info Running initializeCommand from devcontainer.json: 'sh -c .devcontainer/claude-code/init-host.sh'
error sh: 1: .devcontainer/claude-code/init-host.sh: not found
fatal run agent command failed: exit status 1
restart fails identically. Creating a fresh workspace runs the same hook successfully, so this is specific to the paths that act on an already-existing workspace.
Done looks like: both commands complete on blooop/devlaunch from any working directory, and the hook runs.
Notes
Single-ticket map: known work, no fanning.
Ruled out already, so nobody re-treads it:
- Not a missing file.
.devcontainer/claude-code/init-host.sh has existed since the initial commit (195bb3d) and is mode 100755 on main. initializeCommand was added in that same commit, so no checkout of this repo has one without the other.
- Not a stale clone. Same reason — there is no commit where the reference exists but the script doesn't.
- Not the
-- <cmd> suffix. recreate is dispatched at dl.py:1219 before shell-command parsing; the trailing -- "claude --version" is ignored, not mis-parsed.
Leading hypothesis, explicitly unconfirmed: the hook path is relative, so it resolves against devpod's working directory, and run_devpod (dl.py:691) never sets cwd — devpod inherits whatever directory dl was launched from (~ in the report, which has no .devcontainer). Creating a workspace works because devpod is given a source path to anchor on; recreate/restart resolve an existing workspace by id, and devpod up --help shows source is optional for that. Verify before building on it — if the real cause is elsewhere, this stops being single-ticket work and hands off to /wayfinder.
No environment reachable from this session can reproduce it: the devcontainer has devpod v0.26.1 but no Docker daemon (PR #69 would add one, still open). Final confirmation is the human's, on the host.
Destination
dl <repo> recreateanddl <repo> restartwork on a repo whosedevcontainer.jsonhas a relativeinitializeCommand, instead of dying before the container is touched.Observed on the host, against
blooop/devlaunchitself:restartfails identically. Creating a fresh workspace runs the same hook successfully, so this is specific to the paths that act on an already-existing workspace.Done looks like: both commands complete on
blooop/devlaunchfrom any working directory, and the hook runs.Notes
Single-ticket map: known work, no fanning.
Ruled out already, so nobody re-treads it:
.devcontainer/claude-code/init-host.shhas existed since the initial commit (195bb3d) and is mode100755onmain.initializeCommandwas added in that same commit, so no checkout of this repo has one without the other.-- <cmd>suffix.recreateis dispatched atdl.py:1219before shell-command parsing; the trailing-- "claude --version"is ignored, not mis-parsed.Leading hypothesis, explicitly unconfirmed: the hook path is relative, so it resolves against devpod's working directory, and
run_devpod(dl.py:691) never setscwd— devpod inherits whatever directorydlwas launched from (~in the report, which has no.devcontainer). Creating a workspace works because devpod is given a source path to anchor on;recreate/restartresolve an existing workspace by id, anddevpod up --helpshows source is optional for that. Verify before building on it — if the real cause is elsewhere, this stops being single-ticket work and hands off to/wayfinder.No environment reachable from this session can reproduce it: the devcontainer has
devpodv0.26.1 but no Docker daemon (PR #69 would add one, still open). Final confirmation is the human's, on the host.