Skip to content

fix(launch): move Poolside EULA env var to the right side of the pipe#150

Draft
cursor[bot] wants to merge 1 commit into
mainfrom
cursor/ato-269-linear-bug-handling-2643
Draft

fix(launch): move Poolside EULA env var to the right side of the pipe#150
cursor[bot] wants to merge 1 commit into
mainfrom
cursor/ato-269-linear-bug-handling-2643

Conversation

@cursor

@cursor cursor Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Root cause

In agent_install_spec() (src-tauri/src/core/system/commands.rs), the Unix install command for the Poolside agent was:

POOL_INSTALL_ACCEPT_EULA=1 curl -fsSL https://downloads.poolside.ai/pool/install.sh | sh

In a shell pipeline A | B, a leading VAR=1 scopes only to the command it prefixes. Here POOL_INSTALL_ACCEPT_EULA=1 prefixed curl (the left side of the pipe), while the installer script actually runs inside the separate sh process on the right side of the pipe — which never inherits that assignment.

The installer's install.sh reads ACCEPT_EULA="${POOL_INSTALL_ACCEPT_EULA:-0}" (defaults to 0) and, when unset/0, prompts Continue? [Y/n] by reading /dev/tty. Since the process is spawned from the GUI app with no TTY attached, this fails with sh: line 126: /dev/tty: Device not configuredError: installation canceled, and the install toast shows Failed to install Poolside.

The env var name is correct; only its position in the pipeline was wrong. The neighboring goose entry already does this correctly (... | CONFIGURE=false bash — variable on the interpreter side of the pipe), and the Windows branch of Poolside ($env:POOL_INSTALL_ACCEPT_EULA='1'; irm ... | iex) is unaffected since it's a single PowerShell process, not a pipe between two processes.

Fix

Move the assignment to the right side of the pipe, prefixing sh (the process that actually executes install.sh and reads the env var) instead of curl:

curl -fsSL https://downloads.poolside.ai/pool/install.sh | POOL_INSTALL_ACCEPT_EULA=1 sh

One-line change, Unix branch only (macOS/Linux). Windows branch untouched.

Verification

  • Empirically confirmed the shell semantics locally:
    $ sh -c 'FOO=1 printf "x" | sh -c "echo FOO=\$FOO"'
    FOO=          # broken (old code shape): env var doesn't reach the right side of the pipe
    
    $ sh -c 'printf "x" | FOO=1 sh -c "echo FOO=\$FOO"'
    FOO=1         # fixed (new code shape): env var reaches the right side of the pipe
  • cargo check -p Atomic-Chat compiles cleanly (0 errors; only pre-existing, unrelated dead_code warnings in the llamacpp/llamacpp-upstream/vector-db plugins).
  • No other code paths touch this string; the fix is scoped to exactly the reported case.

Closes ATO-269.

Open in Web View Automation 

POOL_INSTALL_ACCEPT_EULA=1 prefixed curl (the left side of `curl | sh`),
so the env var scoped only to curl and never reached the sh process that
actually runs install.sh. The installer then saw ACCEPT_EULA=0, prompted
for interactive EULA confirmation, tried to read /dev/tty (no TTY when
spawned from the GUI), and failed with 'installation canceled'.

Move the assignment to prefix sh instead, so the installer script itself
sees POOL_INSTALL_ACCEPT_EULA=1 and skips the prompt. Matches the
existing goose entry's pattern (env var on the interpreter side of the
pipe). Windows branch is unaffected (single process, no pipe).

Fixes ATO-269.

Co-authored-by: Mike <Vect0rM@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant