Skip to content

Releases: keboola/cli

v0.46.1

25 May 12:54
a16fe57

Choose a tag to compare

Patch release. No CLI runtime behavior change — both items are plugin/tooling.

What's new

Skill now surfaces kbagent data-app logs (#336, closes #335). The kbagent Claude Code skill and the keboola-expert subagent now route log-troubleshooting requests to kbagent data-app logs (shipped in 0.43.8). The SKILL.md description-trigger list gained data-app logs, container logs, app logs, tail logs, build logs, app stdout, app stderr, troubleshoot data app, debug data app, and the keboola-expert Tool Selection Matrix gained a row:

kbagent data-app logs --project P --app-id N [--lines N | --since ISO8601]   (0.43.8+)

Before this, asking the agent for a data app's container logs fell back to the UI "Terminal Log" tab or the 20-line-capped get_data_apps MCP tool.

Frontend dev-tooling fix (#341). Bumped web/frontend dev dependencies — vite 5→8, vitest 2→4, and @vitejs/plugin-react 4→5.2 to keep the peer range consistent with vite 8. The earlier Dependabot PRs (#337, #338) bumped only vite + vitest, leaving plugin-react pinned below vite 8; that broke npm ci (ERESOLVE) in the Windows wheel-build job and silently shipped a UI-less wheel. The bundled SPA and kbagent serve --ui are unchanged.

Install

uv tool install git+https://github.com/keboola/cli

v0.46.0 — Repository moved to keboola/cli

25 May 12:23
76c7e1b

Choose a tag to compare

Repository moved to keboola/cli

The project's canonical home moved from github.com/padak/keboola_agent_cli to github.com/keboola/cli. This release ships from the new home so the fleet migrates itself.

Change. The auto-update and self-install constants (KBAGENT_GITHUB_REPO, KBAGENT_INSTALL_SOURCE) now point at the new repo: the startup version check hits api.github.com/repos/keboola/cli/releases/latest and kbagent update installs from git+https://github.com/keboola/cli. The Claude Code plugin manifest (homepage/repository), the marketplace install instructions (/plugin marketplace add keboola/cli), README / TUTORIAL / CONTRIBUTING, the doctor/serve install hints, the AGENT_CONTEXT snippet, and the README dev-setup clone target were all updated in lock-step. The marketplace name (keboola-agent-cli) and the /plugin install kbagent@keboola-agent-cli identifier are unchanged — they are logical names, not repo paths.

Migration note. Existing installs migrate themselves in a single update cycle: GitHub serves a 301 from the old repo path to keboola/cli, and both auto-update phases follow it (the version check uses httpx with follow_redirects=True; uv/git follow the redirect on clone/fetch). Once you are on >= 0.46.0 the baked-in constants already name the new repo, so the redirect is needed for at most one hop. The old padak/keboola_agent_cli path must not be re-created as a new repository, or the redirect dies and pre-0.46.0 installs are cut off from updates.

Install

uv tool install git+https://github.com/keboola/cli

v0.45.0 — Reliability & code quality

24 May 20:10
482e463

Choose a tag to compare

Reliability & code-quality release.

  • Fixed ~12 silently-broken REST API endpoints in kbagent serve (config rename / folder / search, table column descriptions, file download, data-app password, variables). They would have failed on the first call — now they work and are covered by regression tests so the issue can't quietly come back.
  • Strict type-checking is now enforced across the whole codebase (blocking). This is what surfaced the broken endpoints, and it stops the same class of bug from shipping again.
  • Fleet observability: every Keboola API call now reports OS + version, so CLI usage can be segmented in monitoring. No tokens, secrets, or user identity are exposed.
  • --hint is deprecated in favour of the kbagent serve REST API, which now covers every command. The flag still works (with a deprecation notice) and will be removed in a future release.

No breaking changes for CLI users. Upgrade with kbagent update.

v0.44.0 — kbagent agent <verb> (CLI parity for /agents)

24 May 11:43
e2407aa

Choose a tag to compare

kbagent agent <verb> — CLI parity for the /agents REST surface

kbagent agent brings the CLI to parity with the /agents REST surface that kbagent serve has exposed since v0.40.0 — twelve subcommands for scheduled agent tasks: CRUD, execution, history, and utilities.

What's in it

list, show, create, update, delete, run, runs, run-detail, run-events, test, cron-preview, prompt-improve.

  • Offline-first: CRUD + ad-hoc run read/write <config_dir>/agents.json directly — no kbagent serve needed. The cron loop that fires scheduled tasks still requires a running server, but the on-disk format is identical, so a CLI-created task fires on its cron as soon as the server boots.
  • Three action flavours mirror the REST endpoint byte-for-byte: ai_agent (--cli claude|codex|gemini), cli_command (--argv), mcp_tool (--tool + --input). --from-file PATH|@path|- takes the full {type, params} envelope.
  • Flexible ID forms: every subcommand takes TASK_ID / RUN_ID positionally or via --id / --task-id / --run-id, matching the rest of the CLI (--job-id, --config-id, ...).
  • Streaming (--stream): live events line-by-line in human mode, NDJSON under --json.
  • Trigger chaining (--trigger-task-id + --trigger-on) with cycle / self-loop validation shared byte-for-byte with the REST router.

Install / upgrade

kbagent update

The startup auto-update hook picks this up on the next kbagent invocation.

Notes

  • croniter moved from [server] extras into core dependencies; server/__init__.py was split into a PEP 562 lazy shim + server/app.py so the agent CLI works on plain installs without [server] extras.
  • Supersedes the 0.44.0b1 / 0.44.0b2 pre-releases (left intact as history).
  • Tooling: make version-sync now also pins the keboola-agent-cli self-version in uv.lock.
  • Full per-version detail: kbagent changelog.

v0.44.0 — Beta 2 (kbagent agent CLI, rebased)

23 May 14:54

Choose a tag to compare

kbagent agent <verb> — CLI parity for the /agents REST surface (beta 2)

Beta 2 of #310. Identical agent-command surface as 0.44.0b1, rebased onto the current main so the installed tree carries the latest stable fixes (the 0.43.40.43.9 line: semantic-layer cascade delete, metastore error surfacing, Windows build hook, MCP --prerelease=allow pin, data-app logs, data-app sandbox-filter + plain-key secrets).

What's in it

Twelve kbagent agent subcommands matching the /agents REST endpoints that kbagent serve has exposed since v0.40.0:
list, show, create, update, delete, run, runs, run-detail, run-events, test, cron-preview, prompt-improve.

CRUD + ad-hoc run work fully offline against <config_dir>/agents.json; the cron loop that fires scheduled tasks still requires kbagent serve running, but the on-disk format is identical.

Install (opt-in)

kbagent update --beta

Stable users are unaffected — the auto-update startup hook only consults the stable /releases/latest, which never returns a pre-release.

Notes

  • The earlier v0.44.0b1 pre-release (commit d828e83, cut 2026-05-18) is left intact as history; it was built on a 5-day-old main.
  • Verified locally before release: make check green (3536 passed, 7 skipped), and 11/12 subcommands exercised live against a real config (prompt-improve is covered by unit tests — it shells out to a local AI CLI).

v0.43.9 — Read/remove plain data-app env vars + list hides workspaces

23 May 13:39
0e1fcae

Choose a tag to compare

Read & remove ALL data-app env-var keys, not just encrypted secrets (#330)

kbagent data-app secrets-list shows every key on a data app — both encrypted secrets (#…) and plain unencrypted config values like ADMIN_EMAILS or SMTP_HOST. But secrets-get and secrets-remove used to reject any key without a leading #:

$ kbagent data-app secrets-get --app-id N --key ADMIN_EMAILS
Error: Invalid secret key 'ADMIN_EMAILS'. Keys must start with '#' …

So a key you could plainly see in the list could be neither read nor removed — an inconsistency that blocked routine inspection of data-app configuration.

Fix: the leading # is now optional on secrets-get and secrets-remove.

  • An encrypted secret returns metadata only — the decrypted value is still never echoed (the Encryption API is one-way and the CLI cannot decrypt).
  • A plain value returns its literal value (encrypted: false). That value is already visible via config detail, so nothing new is exposed.
kbagent data-app secrets-get  --project P --app-id N --key ADMIN_EMAILS   # now works → shows the value
kbagent data-app secrets-get  --project P --app-id N --key '#API_KEY'     # encrypted → metadata only
kbagent data-app secrets-remove --project P --app-id N --key ADMIN_EMAILS --yes

secrets-set is intentionally unchanged — it still requires # because it encrypts. To add a plain env var, use config update.

Compatibility note for scripts: the secrets-get JSON envelope gains an encrypted (bool) field and a value (string for plain keys, null for encrypted). fingerprint/encryption_prefix are now always present but empty for plain keys — use the new encrypted flag as the discriminator, not a non-empty fingerprint.

data-app list no longer shows phantom "snowflake" apps (#330)

In a project with interactive Snowflake/BigQuery workspaces (sandboxes), kbagent data-app list showed them as unnamed (snowflake) rows that don't appear in the Apps UI and aren't data apps at all:

1299037558  (snowflake) state=running …   ← a workspace, not a data app
1303774097  New Appggg (python-js) …      ← the real data app

The Data Science /apps API returns every deployment type, not only data apps. The listing now filters to keboola.data-apps, so it matches the Apps UI. The JSON envelope also gains a component_id field per app.

Upgrade

Already have kbagent? It auto-updates on startup, or run:

kbagent update

v0.43.8 — MCP auto-update unblocked + data-app logs

21 May 22:46
f25349f

Choose a tag to compare

keboola-mcp-server auto-update is unblocked (#324)

Every kbagent command was silently failing to update keboola-mcp-server, leaving installs pinned to the stale v1.32.0 while printing a misleading "Possible Python or dependency-version mismatch" warning on every run.

Root cause: keboola-mcp-server >= 1.55.0 declares a pre-release-only transitive dependency (toon-format~=0.9.0b1). uv / pip refuse pre-releases by default, so the bare uv tool upgrade couldn't resolve the latest server and silently backtracked to v1.32.0 — ~30 releases behind.

Fix: every path that installs or upgrades the MCP server — the startup auto-update, kbagent doctor / doctor --fix, the first-time-setup hint, and the command kbagent version recommends — now passes --prerelease=allow (--pre for pip). After upgrading, your MCP server moves to the current release and the warning disappears. This also removes the repeated, costly failed dependency resolution that slowed down every command on affected machines.

Note: this is a workaround on the kbagent side. The real fix lives in keboola-mcp-server (tracked in keboola/mcp-server#538) — once it ships a stable toon-format, the opt-in becomes a no-op.

New: kbagent data-app logs (#326, thanks @ottomansky)

Fetch the full container spin-up trace and runtime logs for a data app:

kbagent data-app logs --project ALIAS --app-id ID [--lines N | --since ISO8601]

A thin wrapper around the Data Science /apps/{id}/logs/tail endpoint with no client-side line cap (the MCP get_data_apps tool hard-caps at 20 lines — too small for a healthy spin-up). --lines 0 returns the full current buffer; --lines and --since are mutually exclusive.

⚠️ Logs can echo runtime secrets the app printed to stdout/stderr; the --json envelope reproduces the body verbatim with no masking.

Upgrade

Already have kbagent? It auto-updates on startup, or run:

kbagent update

Stuck on MCP server v1.32.0 from before this release? After updating kbagent, the next run upgrades the MCP server automatically. To force it immediately:

uv tool install --reinstall --prerelease=allow keboola-mcp-server

v0.43.7 — Windows installation fixed

20 May 20:46
390a46b

Choose a tag to compare

Windows installation is fixed

uv tool install git+https://github.com/padak/keboola_agent_cli was completely broken on Windows — two independent bugs in the wheel build hook meant there was no working install path at all. Both are fixed (closes #320).

  • npm is installed: the build crashed with FileNotFoundError [WinError 2], because npm is npm.cmd (a batch launcher) on Windows and the bare ["npm", …] spawn couldn't resolve it. The hook now hands the build the resolved npm.cmd path — which Windows runs via the system shell — and tolerates a spawn failure, so the React web UI actually builds into the wheel on Windows.
  • npm is not installed: the build crashed with Forced include not found, because an early return left the bundled-UI directory missing. The build now always succeeds — it produces a CLI-only wheel, and kbagent serve --ui shows a friendly "no UI bundled" message instead of a traceback.

This was developed and verified without a Windows machine: a new windows-latest CI job runs a real uv build on every PR (asserting the UI is bundled with npm present, and that a UI-less wheel still builds), backed by 26 new cross-platform tests.

New: KBAGENT_SKIP_UI_BUILD=1 is a build-time env var that produces a deliberate CLI-only wheel (fast builds, no Node required).

Upgrade

Already have kbagent? It auto-updates on startup, or run:

kbagent update

On Windows and couldn't install before? This is the release that fixes it — the standard install now works:

uv tool install --with "keboola-agent-cli[server]" git+https://github.com/padak/keboola_agent_cli

v0.43.6 — Safe job runs with --mode debug

20 May 13:22
79cc6bf

Choose a tag to compare

Run jobs in debug mode — safely, on production configs

kbagent job run now accepts --mode run|debug (default run, unchanged).

--mode debug runs a job with the same configuration and inputs as production, but sends its output to a Storage File tagged debug-<jobId> instead of writing to the destination tables — the run never touches live data.

Use it to:

  • Reproduce a failing production job and inspect its real output, without polluting live tables.
  • Capture a component's actual output as a test fixture (kbagent storage file-download --tag debug-<jobId>).
  • Validate a configuration change before promoting it.

Omit --mode and jobs run exactly as before.

Upgrade

kbagent update

Authored by @matyas-jirat-keboola.

v0.44.0 — Beta 1: kbagent agent <verb>

18 May 11:11

Choose a tag to compare

Highlights

Beta release. This is the first pre-release tag for the agent CLI parity work. Stable users (kbagent update without --beta) are unaffected — the startup auto-update hook stays on /releases/latest which excludes prereleases.

Opt in

kbagent update --beta
# or persist for the shell:
export KBAGENT_INCLUDE_PRERELEASE=1

Requires kbagent 0.43.3+ for tag-pinned install URL (otherwise uv resolves main HEAD instead of the tag, see #317).

New: kbagent agent <verb> — CLI parity for /agents REST

Twelve subcommands, byte-for-byte mirroring the /agents REST surface that kbagent serve exposes:

kbagent agent list
kbagent agent show TASK_ID
kbagent agent create --name N [--cron "..."] (--type ai_agent --cli claude --prompt "..." | --type cli_command --argv ARG ... | --type mcp_tool --tool T ... | --from-file PATH)
kbagent agent update TASK_ID [...]
kbagent agent delete TASK_ID
kbagent agent run TASK_ID [--stream] [--runtime-prompt T | --runtime-input JSON]
kbagent agent runs TASK_ID
kbagent agent run-detail TASK_ID RUN_ID
kbagent agent run-events TASK_ID RUN_ID
kbagent agent test (--type ... | --from-file PATH) [--stream]
kbagent agent cron-preview --cron "0 6 * * 1" [--count N]
kbagent agent prompt-improve --goal "..." [--cli claude|codex|gemini] [--stream/--no-stream]

Design highlights

  • Pure-local CRUD. AgentService reads/writes <config_dir>/agents.json directly. CRUD + ad-hoc run work offline — kbagent serve is only needed for the cron loop firing scheduled tasks.
  • Three action flavours mirror the REST endpoint exactly: ai_agent / cli_command / mcp_tool. Use --from-file PATH|@path|- for the full {type, params} envelope, or convenience flags (--cli + --prompt + --extra-arg, --argv repeatable, --tool + --input + --mcp-project + --mcp-branch).
  • Streaming (--stream) renders events line-by-line in human mode, NDJSON in --json mode — one packet per claude/codex/gemini stdout line, plus init and done envelopes.
  • Trigger chaining via --trigger-task-id ID --trigger-on success|error|always (REST router's validation: no self-loops, target must exist).
  • --runtime-prompt appends ad-hoc text to the persisted prompt for one run (ai_agent only). --runtime-input merges JSON into action params (mcp_tool: shallow-merge into input; cli_command: appends to argv).
  • New blocking REST endpoint POST /agents/prompt/improve mirrors the SSE variant for scripted callers (1:1 parity with kbagent agent prompt-improve --no-stream).

Why it matters

Closes the gap between the React UI sidebar "Agent Tasks" (shipped in v0.40.0) and the CLI users who had to fall back to kbagent http <verb> /agents... from scheduled subprocesses.

Tests

  • 23 unit tests in test_agent_service.py (CRUD round-trip, cron validation, trigger validation incl. self-loop + missing target, runtime_input merge, run mocking, stream test action, run history NOT_FOUND mapping)
  • 22 CLI tests in test_agent_cli.py (every twelve subcommands via CliRunner, both human and --json modes; happy-path + NOT_FOUND for every read endpoint)
  • 3 E2E tests in tests/test_e2e.py::TestE2EAgentTasks (cron-preview, full create-show-update-run-runs-delete lifecycle, ad-hoc test)
  • Full suite: 3438 passed, 7 skipped

Feedback welcome

Please file issues / quirks at https://github.com/padak/keboola_agent_cli/issues. Stable v0.44.0 will follow once the beta has been exercised.