From 260b7ca520f2d6f24a54ff3045e7c619ca374b42 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Mon, 23 Feb 2026 14:15:58 -0800 Subject: [PATCH] Fix dagger call hanging in mise tasks on interactive terminals (#256) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Add `--progress=plain` to all `dagger call` invocations in mise tasks to prevent SIGTTOU hangs ## Root cause Mise runs task scripts in a child process group that is not the terminal's foreground group. When `dagger call` detects a TTY (inherited from the interactive shell), it tries to render its TUI progress display, which requires terminal ioctls. Since the process is not in the foreground group, the kernel sends SIGTTOU, stopping the process indefinitely. This only manifests when running from an interactive terminal (e.g. `pre-commit run --all-files` in fish/wezterm). CI and piped contexts are unaffected since there's no TTY. ## Changes - `mise-tasks/validate-workflows` — add `--progress=plain` - `mise-tasks/frigate-export-model` — add `--progress=plain` - `mise-tasks/provision-ringtail` — add `--progress=plain` ## Test plan - [x] `pre-commit run --all-files` completes without hanging - [ ] Verify in interactive fish/wezterm terminal 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/256 --- docs/changelog.d/fix-dagger-tty-hang.bugfix.md | 1 + mise-tasks/frigate-export-model | 2 +- mise-tasks/provision-ringtail | 2 +- mise-tasks/validate-workflows | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 docs/changelog.d/fix-dagger-tty-hang.bugfix.md diff --git a/docs/changelog.d/fix-dagger-tty-hang.bugfix.md b/docs/changelog.d/fix-dagger-tty-hang.bugfix.md new file mode 100644 index 0000000..9643210 --- /dev/null +++ b/docs/changelog.d/fix-dagger-tty-hang.bugfix.md @@ -0,0 +1 @@ +Fix Dagger pipelines hanging when called from mise tasks in interactive terminals. Added `--progress=plain` to all `dagger call` invocations to prevent SIGTTOU from stopping the process when mise's child process group is not the terminal foreground group. diff --git a/mise-tasks/frigate-export-model b/mise-tasks/frigate-export-model index f1cf828..09ad131 100755 --- a/mise-tasks/frigate-export-model +++ b/mise-tasks/frigate-export-model @@ -14,7 +14,7 @@ OUTPUT_FILE="yolov9-${MODEL_SIZE}-${INPUT_SIZE}.onnx" echo "Exporting YOLOv9-${MODEL_SIZE} (${INPUT_SIZE}x${INPUT_SIZE}) via Dagger..." echo "" -dagger call export-yolov-9 \ +dagger call --progress=plain export-yolov-9 \ --model-size="$MODEL_SIZE" \ --input-size="$INPUT_SIZE" \ export --path="$OUTPUT_FILE" diff --git a/mise-tasks/provision-ringtail b/mise-tasks/provision-ringtail index 81d55fd..7f35229 100755 --- a/mise-tasks/provision-ringtail +++ b/mise-tasks/provision-ringtail @@ -7,7 +7,7 @@ export MISE_TASK_OUTPUT=interleave # Update flake.lock via Dagger before deploying echo "Updating nixos/ringtail/flake.lock..." -dagger call flake-lock --src=. --flake-path=nixos/ringtail \ +dagger call --progress=plain flake-lock --src=. --flake-path=nixos/ringtail \ export --path=nixos/ringtail/flake.lock if ! git diff --quiet nixos/ringtail/flake.lock; then diff --git a/mise-tasks/validate-workflows b/mise-tasks/validate-workflows index e541870..0ab2c5d 100755 --- a/mise-tasks/validate-workflows +++ b/mise-tasks/validate-workflows @@ -3,4 +3,4 @@ set -euo pipefail -dagger call validate-workflows --src=. +dagger call --progress=plain validate-workflows --src=.