Summary
On an install made under the old package name (keboola-agent-cli), auto-update can never succeed. Every kbagent invocation prints the same two lines to stdout and then silently continues on the stale version:
Updating kbagent v0.58.0 -> v0.94.0...
Auto-update failed; continuing with current version.
No cause is surfaced — not with --verbose, not in --json mode (the banner is also emitted above the JSON document, which breaks naive parsers).
Root cause
The distribution was renamed keboola-agent-cli → keboola-cli, but both ship the same kbagent executable. uv therefore treats the upgrade as a new tool rather than an upgrade of the existing one: it resolves and builds keboola-cli==0.94.0 successfully, then refuses at the executable-link step because kbagent is still owned by the keboola-agent-cli tool entry.
Running the exact upgrade_command that kbagent --json version reports shows the error the auto-updater swallows:
$ uv tool install --upgrade git+https://github.com/keboola/cli
...
+ keboola-cli==0.94.0 (from git+https://github.com/keboola/cli@b5ac882)
...
error: Executable already exists: kbagent (use `--force` to overwrite)
uv tool list confirms the two entries are distinct:
keboola-agent-cli v0.58.0
- kbagent
So the upgrade_command advertised in version --json is itself non-functional for every user who installed before the rename — the advice is self-defeating, and the auto-updater hides why.
Reproduction
- Install under the old name:
uv tool install git+https://github.com/keboola/cli at a pre-rename commit (tool entry is named keboola-agent-cli).
- Run any command, e.g.
kbagent --json version.
- Observe the "Auto-update failed" banner, with the version pinned at the old release indefinitely.
Workaround that works
uv tool uninstall keboola-agent-cli
uv tool install git+https://github.com/keboola/cli
Config is preserved — ~/Library/Application Support/keboola-agent-cli/config.json is still the path the renamed package reads, and all 24 registered projects survived. (Worth confirming that is intentional and not a second latent rename waiting to strand people's configs.)
Suggested fixes
- Surface the error. "Auto-update failed" with no cause is the real cost here; a stale CLI ran for an unknown number of releases without anyone knowing why. Print the underlying stderr at least under
--verbose.
- Make
upgrade_command correct for legacy installs — either emit --force, or detect a keboola-agent-cli tool entry and emit the uninstall-then-install pair.
- Add a
doctor check for a legacy keboola-agent-cli tool entry, since that is exactly the population that is silently frozen.
- Keep the banner off stdout in
--json mode — it currently precedes the JSON document.
Environment
- macOS (Darwin 25.5.0), arm64
uv 0.12.1
- kbagent 0.58.0 → 0.94.0
- Installed via
uv tool install (no install_channel in version --json)
Related but distinct: #353 (auto-update falsely reporting failure due to a 120s timeout on WSL). This one is not a timeout — it fails instantly and deterministically.
🤖 Generated with Claude Code
Summary
On an install made under the old package name (
keboola-agent-cli), auto-update can never succeed. Everykbagentinvocation prints the same two lines to stdout and then silently continues on the stale version:No cause is surfaced — not with
--verbose, not in--jsonmode (the banner is also emitted above the JSON document, which breaks naive parsers).Root cause
The distribution was renamed
keboola-agent-cli→keboola-cli, but both ship the samekbagentexecutable.uvtherefore treats the upgrade as a new tool rather than an upgrade of the existing one: it resolves and buildskeboola-cli==0.94.0successfully, then refuses at the executable-link step becausekbagentis still owned by thekeboola-agent-clitool entry.Running the exact
upgrade_commandthatkbagent --json versionreports shows the error the auto-updater swallows:uv tool listconfirms the two entries are distinct:So the
upgrade_commandadvertised inversion --jsonis itself non-functional for every user who installed before the rename — the advice is self-defeating, and the auto-updater hides why.Reproduction
uv tool install git+https://github.com/keboola/cliat a pre-rename commit (tool entry is namedkeboola-agent-cli).kbagent --json version.Workaround that works
Config is preserved —
~/Library/Application Support/keboola-agent-cli/config.jsonis still the path the renamed package reads, and all 24 registered projects survived. (Worth confirming that is intentional and not a second latent rename waiting to strand people's configs.)Suggested fixes
--verbose.upgrade_commandcorrect for legacy installs — either emit--force, or detect akeboola-agent-clitool entry and emit the uninstall-then-install pair.doctorcheck for a legacykeboola-agent-clitool entry, since that is exactly the population that is silently frozen.--jsonmode — it currently precedes the JSON document.Environment
uv0.12.1uv tool install(noinstall_channelinversion --json)Related but distinct: #353 (auto-update falsely reporting failure due to a 120s timeout on WSL). This one is not a timeout — it fails instantly and deterministically.
🤖 Generated with Claude Code