Description
Description
The installer accepts --yes-i-accept-third-party-software (and the equivalent NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 env var) per `bash install.sh --help`, but in curl|bash mode (no TTY) the flag alone is silently ignored — the installer still tries to read /dev/tty and fails with "Interactive third-party software acceptance requires a TTY". The flag only takes effect when --non-interactive (or NEMOCLAW_NON_INTERACTIVE=1) is also passed. The flag's name and the --help text both imply it is sufficient on its own; the gating on --non-interactive is undocumented from the user's perspective and contradicts the flag name. The error message does point users at the fix, but a flag that is named "yes-i-accept" should make the install proceed.
Environment
Device: DGX Spark / NVIDIA GB300 (host: galaxy-ts2-052)
OS: Ubuntu 24.04.3 LTS (Linux 6.17.0-1008-nvidia-64k)
Architecture: aarch64
Node.js: v22.22.2
npm: 10.9.7
Docker: Docker Engine 29.1.3
OpenShell CLI: openshell 0.0.36
NemoClaw: v0.0.29
OpenClaw: N/A (onboard not reached)
Steps to Reproduce
1. On a host without TTY (e.g. via ssh non-interactive, scripted CI, curl|bash):
rm -rf ~/.nemoclaw ~/.openclaw ~/.local/bin/nemoclaw ~/.local/bin/openshell
2. Run with the license flag alone, no --non-interactive:
curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --yes-i-accept-third-party-software
echo "EXIT=$?"
3. Observe: same /dev/tty error and exit 1 as if the flag had not been passed.
4. Run with both flags:
curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --non-interactive --yes-i-accept-third-party-software
echo "EXIT=$?"
5. Observe: license is accepted, ~/.nemoclaw/usage-notice.json is created, install proceeds.
Expected Result
Either:
(a) --yes-i-accept-third-party-software alone implies non-interactive license acceptance and the install proceeds in curl|bash mode (the flag's name and intent), OR
(b) The flag is renamed and --help is updated to make the dependency on --non-interactive explicit, e.g. "--yes-i-accept-third-party-software (only honored with --non-interactive)".
The current behavior — flag accepted by parser, silently ignored at execution — is the worst-of-both: users believe they accepted, but install still fails.
Actual Result
$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --yes-i-accept-third-party-software
...
[3/3] Onboarding
Detected container runtime: docker
/tmp/tmp.iApreLz7Uk/source/scripts/install.sh: line 368: /dev/tty: No such device or address
[ERROR] Interactive third-party software acceptance requires a TTY. Re-run in a terminal or set NEMOCLAW_NON_INTERACTIVE=1 with --yes-i-accept-third-party-software.
=== EXIT CODE: 1 ===
The script's show_usage_notice() at install.sh:~360-380 first checks `if [ "${NON_INTERACTIVE:-}" = "1" ]`; only inside that branch does it honor `--yes-i-accept-third-party-software`. In the non-TTY + flag-only path, control falls through to `exec 3Side-effect: this same execution path also shows the raw `/dev/tty: No such device or address` bash error before the friendly [ERROR] message, leaking implementation detail to users — recommend wrapping the redirect in a function that suppresses raw stderr.
Bug Details
| Field |
Value |
| Priority |
Unprioritized |
| Action |
Dev - Open - To fix |
| Disposition |
Open issue |
| Module |
Machine Learning - NemoClaw |
| Keyword |
NemoClaw, NemoClaw_CLI&UX, NEMOCLAW_GH_SYNC_APPROVAL, NemoClaw_Install |
[NVB#6126094]
Description
Description
Environment Steps to Reproduce1. On a host without TTY (e.g. via ssh non-interactive, scripted CI, curl|bash): rm -rf ~/.nemoclaw ~/.openclaw ~/.local/bin/nemoclaw ~/.local/bin/openshell 2. Run with the license flag alone, no --non-interactive: curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --yes-i-accept-third-party-software echo "EXIT=$?" 3. Observe: same /dev/tty error and exit 1 as if the flag had not been passed. 4. Run with both flags: curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --non-interactive --yes-i-accept-third-party-software echo "EXIT=$?" 5. Observe: license is accepted, ~/.nemoclaw/usage-notice.json is created, install proceeds.Expected Result Actual Result$ curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash -s -- --yes-i-accept-third-party-software ... [3/3] Onboarding Detected container runtime: docker /tmp/tmp.iApreLz7Uk/source/scripts/install.sh: line 368: /dev/tty: No such device or address [ERROR] Interactive third-party software acceptance requires a TTY. Re-run in a terminal or set NEMOCLAW_NON_INTERACTIVE=1 with --yes-i-accept-third-party-software. === EXIT CODE: 1 === The script's show_usage_notice() at install.sh:~360-380 first checks `if [ "${NON_INTERACTIVE:-}" = "1" ]`; only inside that branch does it honor `--yes-i-accept-third-party-software`. In the non-TTY + flag-only path, control falls through to `exec 3Bug Details
[NVB#6126094]