Summary
The non-interactive install path unconditionally runs basecamp setup claude, even when the intended agent is Codex. This produces a confusing and unrelated Claude plugin installation attempt after the Basecamp CLI itself has installed successfully.
Codex is supported by the embedded skill picker, but the piped installer does not select or install the Codex-specific skill location.
Environment
- Basecamp CLI: v0.7.2
- Platform: Linux amd64 (Bluefin/Fedora-family desktop)
- Intended agent: Codex
- Claude Code also happened to be installed on the machine
Reproduction
Run the documented installer:
curl -fsSL https://basecamp.com/install-cli | bash
Because stdin is piped, the installer takes the non-TTY branch.
Observed behavior
The CLI binary installs and verifies successfully, then setup proceeds into Claude-specific behavior:
✓ Installed basecamp
✓ Skipping interactive setup (no terminal detected).
✓ Agent skill installed
...
Installing plugin "basecamp@37signals"...
✘ Failed to install plugin "basecamp@37signals" ...
Claude Code plugin not installed
In this environment, the optional Claude marketplace/plugin clone failed on SSH host-key configuration. That failure is unrelated to the intended Codex setup, but it becomes the most prominent final result of an otherwise successful Basecamp CLI installation.
The source currently hardcodes the behavior in the non-interactive paths:
"$BIN_DIR/$binary_name" setup claude || true
This is present in both the v0.7.2 installer and current main:
The reported Agent skill installed result writes the shared skill under ~/.agents/skills/basecamp/. It does not demonstrate that the Codex-specific location ~/.codex/skills/basecamp/SKILL.md was populated.
The working recovery was:
basecamp skill
# Select: Codex (Global) (~/.codex/skills/basecamp/SKILL.md)
Codex support already exists in the skill picker:
https://github.com/basecamp/basecamp-cli/blob/v0.7.2/internal/commands/skill.go
Authentication and CLI operation then worked normally.
Expected behavior
The generic installer should not attempt to configure Claude unless Claude is explicitly selected.
For a non-TTY installation, one of these would be clearer:
- Install only the agent-neutral shared skill and print agent-specific follow-up commands.
- Detect supported agents and install their skill locations without invoking unrelated plugin systems.
- Accept an explicit selector such as
BASECAMP_AGENT=codex.
- Direct Codex users to
basecamp skill or install ~/.codex/skills/basecamp/SKILL.md when Codex is detected.
The final summary should also distinguish:
- CLI installed successfully
- shared agent skill installed
- Codex skill installed or still required
- optional Claude plugin installation failed
Additional related UX
After successful basecamp auth login, the CLI again prints:
Claude Code detected. Connect it to Basecamp:
basecamp setup claude
That nudge may be technically accurate when a Claude binary exists, but it reinforces the impression that Claude is the primary or only supported agent even when the user is setting up Codex.
Summary
The non-interactive install path unconditionally runs
basecamp setup claude, even when the intended agent is Codex. This produces a confusing and unrelated Claude plugin installation attempt after the Basecamp CLI itself has installed successfully.Codex is supported by the embedded skill picker, but the piped installer does not select or install the Codex-specific skill location.
Environment
Reproduction
Run the documented installer:
curl -fsSL https://basecamp.com/install-cli | bashBecause stdin is piped, the installer takes the non-TTY branch.
Observed behavior
The CLI binary installs and verifies successfully, then setup proceeds into Claude-specific behavior:
In this environment, the optional Claude marketplace/plugin clone failed on SSH host-key configuration. That failure is unrelated to the intended Codex setup, but it becomes the most prominent final result of an otherwise successful Basecamp CLI installation.
The source currently hardcodes the behavior in the non-interactive paths:
This is present in both the v0.7.2 installer and current
main:The reported
Agent skill installedresult writes the shared skill under~/.agents/skills/basecamp/. It does not demonstrate that the Codex-specific location~/.codex/skills/basecamp/SKILL.mdwas populated.The working recovery was:
basecamp skill # Select: Codex (Global) (~/.codex/skills/basecamp/SKILL.md)Codex support already exists in the skill picker:
https://github.com/basecamp/basecamp-cli/blob/v0.7.2/internal/commands/skill.go
Authentication and CLI operation then worked normally.
Expected behavior
The generic installer should not attempt to configure Claude unless Claude is explicitly selected.
For a non-TTY installation, one of these would be clearer:
BASECAMP_AGENT=codex.basecamp skillor install~/.codex/skills/basecamp/SKILL.mdwhen Codex is detected.The final summary should also distinguish:
Additional related UX
After successful
basecamp auth login, the CLI again prints:That nudge may be technically accurate when a Claude binary exists, but it reinforces the impression that Claude is the primary or only supported agent even when the user is setting up Codex.