Skip to content

Installer pipe corruption: gum spin child inherits piped script stdin #90008

Description

@SebTardif

Problem

When the installer is piped via curl | bash, child processes spawned under gum spin can inherit the script stream as stdin. Gum v0.17.0 sets the wrapped command's stdin to os.Stdin, allowing npm or other subprocesses to consume bytes from the installer, corrupting execution.

Additionally, fallback paths redirect stdin unconditionally from /dev/null, breaking interactive commands like Homebrew installation prompts when the script is run directly (bash install.sh).

Expected behavior

  • Piped mode (curl | bash): child processes should not be able to read from the piped script stream
  • Direct mode (bash install.sh): interactive commands should retain terminal stdin for user prompts

Actual behavior

  • Piped mode: gum-wrapped child commands inherit the piped script stream as stdin
  • Direct mode: fallback paths unconditionally redirect stdin from /dev/null, breaking interactive prompts

Affected files

  • scripts/install.sh (run_with_spinner, run_quiet_step, run_npm_global_install)

Metadata

Metadata

Assignees

Labels

P2Normal backlog priority with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:crash-loopCrash, hang, restart loop, or process-level availability failure.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

Type

No type

Fields

Priority

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions