Source profileQuality 93/100Review permissions

keboola/cli/plugins/kbagent/skills/kbagent/SKILL.md

kbagent

Use when working with Keboola Connection projects via the kbagent CLI. Covers: exploring and searching configurations, job history, data lineage, dev branches, workspace SQL debugging, GitOps config sync (pull/push/diff/clone), bucket sharing and linking, encrypting secrets, Storage tables, files, and snapshots (backup/restore), data apps (deploy/logs/secrets), flows and schedules, members and invitations, feature flags, OTLP data streams, scoped Storage tokens, the semantic layer (models, metri

Source repository stars
12
Declared platforms
0
Static risk flags
4
Last source update
2026-08-24
Source checked
2026-08-25

Decision brief

What it does: where it fits

Covers: exploring and searching configurations, job history, data lineage, dev branches, workspace SQL debugging, GitOps config sync (pull/push/diff/clone), bucket sharing and linking, encrypting secrets, Storage tables, files, and snapshots (backup/restore), data apps (deploy/logs/secrets), flows and schedules, members and invitations, feature flags, OTLP…

Best for

  • Use when working with Keboola Connection projects via the kbagent CLI.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/keboola/cli --skill "plugins/kbagent/skills/kbagent"
Safe inspection promptEditorial

Inspect the Agent Skill "kbagent" from https://github.com/keboola/cli/blob/fc7ae7db289e4425e3a34ab7822f7889309317a4/plugins/kbagent/skills/kbagent/SKILL.md at commit fc7ae7db289e4425e3a34ab7822f7889309317a4. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    How to use this skill

    This skill contains everything you need. The decision table below maps goals to commands. For detailed workflows, see the references/ docs linked at the bottom.

    This skill contains everything you need. The decision table below maps goals to commands. For detailed workflows, see the references/ docs linked at the bottom.For command flags and parameters, use kbagent --help (e.g. kbagent config new --help).If kbagent is not installed or you need the full standalone reference, run kbagent context.
  2. 02

    Safe write workflow

    For any operation that modifies a Keboola config or storage object, follow this order. See safe-write-workflow for the detailed runbook with examples and anti-patterns.

    Fetch fresh from the API (e.g. kbagent --json config detail ...) -- never reuse a local file from earlier in the session.Compute the change in memory or via jq/Python. Keep the diff small and targeted; prefer --set path=value or --merge over full-config replacement.Preview with --dry-run (e.g. kbagent --json config update ... --dry-run). Show the user what will change.
  3. 03

    Workflow references

    Review the “Workflow references” section in the pinned source before continuing.

    Review and apply the “Workflow references” source section.
  4. 04

    First-time setup

    If kbagent is not yet installed:

    If kbagent is not yet installed:
  5. 05

    Rules

    1. Always use --json: kbagent --json for parseable output 2. Set conversation ID: before first kbagent call, run export KBAGENTCONVERSATIONID="" (e.g. session UUID). All API requests include this as X-Conversation-ID header for platform observability. 3. Multi-project by default…

    Always use --json: kbagent --json for parseable outputSet conversation ID: before first kbagent call, run export KBAGENTCONVERSATIONID="" (e.g. session UUID). All API requests include this as X-Conversation-ID header for platform observability.Multi-project by default: read commands query ALL connected projects in parallel -- no need to loop

Permission review

Static risk signals and limitations

Network access

medium · line 20

The documentation includes network, browsing, or remote request actions.

**Always fetch fresh before write**: configs change between commands and across users. Re-fetch from the API immediately before any update; never reuse a config dump from earlier in the session. Stale local files are how `vN+1` silently ove

Runs scripts

medium · line 22

The documentation asks the agent to run terminal commands or scripts.

**There is no MCP passthrough.** `kbagent tool list` / `tool call` and `agent --type mcp_tool` were removed in v0.85.0 -- every catalog tool has a native command. If a user names an old tool (`update_config`, `get_configs`, `query_data`, ..

Network access

medium · line 29

The documentation includes network, browsing, or remote request actions.

**Fetch fresh** from the API (e.g. `kbagent --json config detail ...`) -- never reuse a local file from earlier in the session.

Writes files

medium · line 96

The documentation asks the agent to create, modify, or delete local files.

| Rename a configuration (update name via API + rename local sync directory) | `kbagent config rename --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --name NAME` |

Writes files

medium · line 157

The documentation asks the agent to create, modify, or delete local files.

| Add and/or remove tags on a Storage File | `kbagent storage file-tag --project PROJECT --file-id FILE-ID` |

Reads files

low · line 159

The documentation asks the agent to read local files, directories, or repositories.

| Load a Storage File into a table | `kbagent storage load-file --project PROJECT --file-id FILE-ID --table-id TABLE-ID` |

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score93/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars12SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
keboola/cli
Skill path
plugins/kbagent/skills/kbagent/SKILL.md
Commit
fc7ae7db289e4425e3a34ab7822f7889309317a4
License
Apache-2.0
Collected
2026-08-25
Default branch
main
View the original SKILL.md

kbagent -- Keboola Agent CLI

How to use this skill

This skill contains everything you need. The decision table below maps goals to commands. For detailed workflows, see the references/ docs linked at the bottom.

For command flags and parameters, use kbagent <command> --help (e.g. kbagent config new --help).

If kbagent is not installed or you need the full standalone reference, run kbagent context.

Rules

  1. Always use --json: kbagent --json <command> for parseable output
  2. Set conversation ID: before first kbagent call, run export KBAGENT_CONVERSATION_ID="<unique-id>" (e.g. session UUID). All API requests include this as X-Conversation-ID header for platform observability.
  3. Multi-project by default: read commands query ALL connected projects in parallel -- no need to loop
  4. Write commands need --project: specify the target project alias
  5. Tokens are always masked in output -- this is expected, not an error
  6. Always fetch fresh before write: configs change between commands and across users. Re-fetch from the API immediately before any update; never reuse a config dump from earlier in the session. Stale local files are how vN+1 silently overwrites someone else's vN changes.
  7. Always --dry-run first for destructive operations (config update, config delete, storage delete-*, branch delete, sync push). Show the user the diff and get explicit confirmation before applying.
  8. There is no MCP passthrough. kbagent tool list / tool call and agent --type mcp_tool were removed in v0.85.0 -- every catalog tool has a native command. If a user names an old tool (update_config, get_configs, query_data, ...), map it via docs/mcp-migration.md in the repo and run the native command instead.
  9. Never auto-run jobs after config changes. config update (or sync push) and job run are always two separate steps. Wait for the user to confirm before triggering a run -- do not chain them.

Safe write workflow

For any operation that modifies a Keboola config or storage object, follow this order. See safe-write-workflow for the detailed runbook with examples and anti-patterns.

  1. Fetch fresh from the API (e.g. kbagent --json config detail ...) -- never reuse a local file from earlier in the session.
  2. Compute the change in memory or via jq/Python. Keep the diff small and targeted; prefer --set path=value or --merge over full-config replacement.
  3. Preview with --dry-run (e.g. kbagent --json config update ... --dry-run). Show the user what will change.
  4. Get user confirmation before re-running the same command without --dry-run.
  5. Verify by re-fetching the config and inspecting the new version.
  6. Stop. Do NOT auto-trigger job run, transformation execution, or any side-effecting follow-up. The user decides when to run.

When working inside a git repository or project directory, run kbagent init (or kbagent init --from-global) once to create a local .kbagent/ workspace. After that, kbagent works from any subdirectory of the project -- no need to cd ~ first.

Choosing the right approach

GoalCommand
Update kbagent to the latest versionkbagent update
Show recent changelog (what changed in each version)kbagent changelog
Launch the kbagent HTTP API serverkbagent serve
Search for items (tables, buckets, configs, flows, …) by name or contentkbagent search <QUERY>
List all operations with their risk category and current allowed/denied statuskbagent permissions list
Show the current active permission policykbagent permissions show
Set the permission policy (firewall rules)kbagent permissions set --mode MODE
Remove all permission restrictionskbagent permissions reset
Check if a specific operation is allowedkbagent permissions check <OPERATION>
Sign in to a Keboola stack via browser login (PKCE) or device codekbagent auth login
Sign in via email + password (+ TOTP if the account has MFA) -- no browserkbagent auth login-password --email EMAIL
Show the programmatic-auth session health for a stackkbagent auth status
Revoke and clear the local programmatic-auth session for a stackkbagent auth logout
Register accessible projects from the current session as local aliaseskbagent auth register-projects
Add a new Keboola project connectionkbagent project add --project ALIAS
List all connected Keboola projectskbagent project list
Remove a Keboola project connectionkbagent project remove --project ALIAS
Edit an existing Keboola project connectionkbagent project edit --project ALIAS
Test connectivity to connected Keboola projectskbagent project status
Refresh expired or invalid Storage API tokenskbagent project refresh
Pin as the default project for subsequent commandskbagent project use <ALIAS>
Show the effective default projectkbagent project current
Get the Keboola dashboard project descriptionkbagent project description-get --project PROJECT
Set the Keboola dashboard project description (markdown)kbagent project description-set --project PROJECT
Show detailed project metadatakbagent project info --project PROJECT
Invite a user (or many users via CSV) to one or more projectskbagent project invite
List active members of a project (and optionally pending invitations)kbagent project member-list --project PROJECT
List pending project invitationskbagent project invitation-list --project PROJECT
Cancel a pending invitationkbagent project invitation-cancel --project PROJECT --email EMAIL
Remove an active member from a project (destructive)kbagent project member-remove --project PROJECT --email EMAIL
Change an existing member's role (PATCH)kbagent project member-set-role --project PROJECT --email EMAIL --role ROLE
Set up projects and register them in the kbagent configkbagent org setup --url URL
List all feature flags defined on the stackkbagent feature list --project PROJECT
Show feature flags assigned to a projectkbagent feature project-show --project PROJECT
Enable a feature flag on a projectkbagent feature project-add --project PROJECT --feature FEATURE
Disable a feature flag on a project (destructive)kbagent feature project-remove --project PROJECT --feature FEATURE
Show feature flags assigned to a userkbagent feature user-show --project PROJECT --email EMAIL
Enable a feature flag on a userkbagent feature user-add --project PROJECT --email EMAIL --feature FEATURE
Disable a feature flag on a user (destructive)kbagent feature user-remove --project PROJECT --email EMAIL --feature FEATURE
Mint a scoped Storage API token (secret shown once)kbagent token create --project PROJECT --description DESCRIPTION
List the project's Storage API tokens (no secrets -- those are mint-only)kbagent token list --project PROJECT
Revoke a Storage API token immediately (destructive; only non-master tokens)kbagent token delete --project PROJECT --token-id TOKEN-ID
Rotate a token: generate a new value and invalidate the old one (secret shown once)kbagent token refresh --project PROJECT --token-id TOKEN-ID
Show the current PAYG credit balance for one or more projectskbagent billing credits
List available components from connected projectskbagent component list
Show detailed information about a specific componentkbagent component detail --component-id COMPONENT-ID
Run a synchronous component action such as testConnectionkbagent component sync-action <ACTION-NAME> --component-id COMPONENT-ID --project PROJECT
List configurations from connected projectskbagent config list
Show detailed information about one or many configurationskbagent config detail --component-id COMPONENT-ID
Show sample configuration JSON examples for a componentkbagent config examples --component-id COMPONENT-ID
Search through configuration bodies for a string or patternkbagent config search --query QUERY
Update a configuration's metadata and/or contentkbagent config update --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Set or clear storage.output.default_bucket on a configurationkbagent config set-default-bucket --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Rename a configuration (update name via API + rename local sync directory)kbagent config rename --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --name NAME
Soft-delete a configuration into the trash (restorable)kbagent config delete --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Generate boilerplate configuration files for a Keboola component, optionally creating the config remotely in one shotkbagent config new --component-id COMPONENT-ID
List all metadata entries on a configurationkbagent config metadata-list --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Read a single metadata value by keykbagent config get-metadata --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --key KEY
Set a metadata key/value on a configuration (upsert)kbagent config set-metadata --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --key KEY --value VALUE
Delete a configuration metadata entry by its numeric IDkbagent config delete-metadata --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --metadata-id METADATA-ID
Set the folder (KBC.configuration.folderName) on a configurationkbagent config set-folder --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --name NAME
Assign variables to a config (auto-creates backing keboola.variables on first call)kbagent config variables-set --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Read the current variable values attached to a configkbagent config variables-get --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Unlink variables from a config (does NOT delete the underlying keboola.variables)kbagent config variables-clear --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Create a new configuration rowkbagent config row-create --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --name NAME
Update an existing configuration rowkbagent config row-update --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --row-id ROW-ID
Delete a configuration rowkbagent config row-delete --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --row-id ROW-ID
Read the runtime state dict of a configuration or one of its rowskbagent config state-get --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Overwrite the runtime state dict of a configuration or one of its rowskbagent config state-set --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --state STATE
Duplicate a configuration, whole -- including runtime, storage and authorizationkbagent config clone --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID --name NAME
Requires master token.kbagent config oauth-url --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Restore a configuration from the trash (undo of 'config delete')kbagent config restore --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
List configurations in the trash (restorable via 'config restore')kbagent config trash-list --project PROJECT
List data apps across one or more registered projectskbagent data-app list
Show merged Data Science + Storage detail for one data appkbagent data-app detail --project PROJECT --app-id APP-ID
Create a Keboola data app end-to-end (POST + encrypt + PUT + deploy)kbagent data-app create --project PROJECT --name NAME --slug SLUG
Deploy the latest Storage config (the §9 redeploy contract)kbagent data-app deploy --project PROJECT --app-id APP-ID
Wake an auto-suspended data app at its currently-pinned configVersionkbagent data-app start --project PROJECT --app-id APP-ID
Stop a running data app (preserves the URL and Storage config)kbagent data-app stop --project PROJECT --app-id APP-ID
Delete the deployment AND the Storage config (cascade, irreversible)kbagent data-app delete --project PROJECT --app-id APP-ID
Retrieve the simpleAuth password for a password-gated data appkbagent data-app password --project PROJECT --app-id APP-ID
Tail the container logs for a deployed data appkbagent data-app logs --project PROJECT --app-id APP-ID
List a data app's recent deployment attempts (runs), newest firstkbagent data-app runs --project PROJECT --app-id APP-ID
Pre-flight check that a git repo follows the Keboola data-app Golden Rulekbagent data-app validate-repo --git-repo GIT-REPO
Show the clone URLs of a data app's configured git repositorykbagent data-app git-repo --project PROJECT --app-id APP-ID
List the credentials of a data app's MANAGED git repositorykbagent data-app git-credentials --project PROJECT --app-id APP-ID
Create a git credential (SSH key or HTTP token) for a MANAGED repokbagent data-app git-credentials-create --project PROJECT --app-id APP-ID --type CRED-TYPE --permissions PERMISSIONS
Encrypt and write app-runtime secrets to the linked Storage configkbagent data-app secrets-set --project PROJECT --app-id APP-ID
List the keys in parameters.dataApp.secrets, with derived runtime env-var nameskbagent data-app secrets-list --project PROJECT --app-id APP-ID
Show ONE key from parameters.dataApp.secretskbagent data-app secrets-get --project PROJECT --app-id APP-ID --key KEY
Remove one or more app-runtime secrets.kbagent data-app secrets-remove --project PROJECT --app-id APP-ID --key KEY
List jobs from connected projectskbagent job list
Show detailed information about a specific jobkbagent job detail --project PROJECT --job-id JOB-ID
Run a job for a component configurationkbagent job run --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Terminate one or more Queue API jobs (use to stop runaway or stuck jobs)kbagent job terminate --project PROJECT
List storage buckets with sharing/linked bucket informationkbagent storage buckets
Show detailed bucket info including backend-native direct access pathskbagent storage bucket-detail --project PROJECT --bucket-id BUCKET-ID
List storage tables from one or more projectskbagent storage tables
Show detailed table info including columns, types and physical layoutkbagent storage table-detail --project PROJECT --table-id TABLE-ID
Create a new storage bucketkbagent storage create-bucket --project PROJECT --stage STAGE --name NAME
Create a new storage table with typed columnskbagent storage create-table --project PROJECT --bucket-id BUCKET-ID --name NAME
Upload a CSV file into a storage tablekbagent storage upload-table --project PROJECT --table-id TABLE-ID --file FILE
Export a storage table to a local CSV filekbagent storage download-table --project PROJECT --table-id TABLE-ID
Delete one or more storage tableskbagent storage delete-table --project PROJECT --table-id TABLE-ID
Truncate (delete all rows from) one or more storage tableskbagent storage truncate-table --project PROJECT --table-id TABLE-ID
Add a single column to an existing table (synchronous, typed)kbagent storage add-column --project PROJECT --table-id TABLE-ID --column COLUMN
Delete one or more columns from a storage tablekbagent storage delete-column --project PROJECT --table-id TABLE-ID --column COLUMN
Swap two storage tables (any branch, including the default/production branch)kbagent storage swap-tables --project PROJECT --table-id TABLE-ID --target-table-id TARGET-TABLE-ID
Clone (pull) a production table into a development branchkbagent storage clone-table --project PROJECT --table-id TABLE-ID
Delete one or more storage bucketskbagent storage delete-bucket --project PROJECT --bucket-id BUCKET-ID
List Storage Files with optional tag filteringkbagent storage files --project PROJECT
Show Storage File metadata (without downloading)kbagent storage file-detail --project PROJECT --file-id FILE-ID
Upload a local file to Storage Fileskbagent storage file-upload --project PROJECT --file FILE
Download a Storage File to local diskkbagent storage file-download --project PROJECT
Add and/or remove tags on a Storage Filekbagent storage file-tag --project PROJECT --file-id FILE-ID
Delete one or more Storage Fileskbagent storage file-delete --project PROJECT --file-id FILE-ID
Load a Storage File into a tablekbagent storage load-file --project PROJECT --file-id FILE-ID --table-id TABLE-ID
Export a table to a Storage Filekbagent storage unload-table --project PROJECT --table-id TABLE-ID
List snapshots of a tablekbagent storage snapshots --project PROJECT --table-id TABLE-ID
Create a snapshot of a table (data + columns + primary key)kbagent storage snapshot-create --project PROJECT --table-id TABLE-ID
Show one snapshot's detail (source table, creation time, description)kbagent storage snapshot-detail --project PROJECT --snapshot-id SNAPSHOT-ID
Delete one or more table snapshots (the source tables are untouched)kbagent storage snapshot-delete --project PROJECT --snapshot-id SNAPSHOT-ID
Create a NEW table from an existing snapshot (snapshot restore)kbagent storage table-from-snapshot --project PROJECT --snapshot-id SNAPSHOT-ID --bucket-id BUCKET-ID --name NAME
Set the description on a storage bucketkbagent storage describe-bucket --project PROJECT --bucket-id BUCKET-ID
Set the description on a storage tablekbagent storage describe-table --project PROJECT --table-id TABLE-ID
Set descriptions on one or more columns of a storage tablekbagent storage describe-column --project PROJECT --table-id TABLE-ID --column COLUMN
Apply descriptions to buckets, tables, and columns from a YAML filekbagent storage describe-batch --project PROJECT --from-file FROM-FILE
Convert legacy KBC.column.* descriptions to the native definition endpointkbagent storage describe-migrate --project PROJECT
List Data Streams sources in a projectkbagent stream list --project PROJECT
Create an OTLP (or HTTP) source and return its endpointkbagent stream create-source --project PROJECT --name NAME
Show a source's endpoints, protocol, and destination tableskbagent stream detail [SOURCE-ID] --project PROJECT
Delete a Data Streams source (destructive)kbagent stream delete <SOURCE-ID> --project PROJECT
List shared buckets available for linkingkbagent sharing list
Enable sharing on a bucketkbagent sharing share --project PROJECT --bucket-id BUCKET-ID --type SHARING-TYPE
Disable sharing on a bucketkbagent sharing unshare --project PROJECT --bucket-id BUCKET-ID
Link a shared bucket into a projectkbagent sharing link --project PROJECT --source-project-id SOURCE-PROJECT-ID --bucket-id BUCKET-ID
Remove a linked bucket from a projectkbagent sharing unlink --project PROJECT --bucket-id BUCKET-ID
Show cross-project data flow edges via bucket sharingkbagent sharing edges
Build column-level lineage graph from sync'd datakbagent lineage build --output OUTPUT
Show what's in a cached lineage graphkbagent lineage info --load LOAD
Query upstream/downstream dependencies from a cached lineage graphkbagent lineage show --load LOAD
Start a local web server with interactive lineage browserkbagent lineage server --load LOAD
Check Kai server health and MCP connection statuskbagent kai ping
Ask Kai a one-shot question and get the full responsekbagent kai ask --message MESSAGE
Send a message to Kai in a chat sessionkbagent kai chat --message MESSAGE
Check whether the configured token can use Kai (master token + AI Agent Chat)kbagent kai preflight
Fetch the full message history of a single Kai chatkbagent kai chat-detail --chat-id CHAT-ID
List recent Kai chat sessionskbagent kai history
Ask the Keboola documentation a natural language questionkbagent docs query <QUESTION>
Create a SQL transformation from a SQL scriptkbagent transformation create --name NAME
Show a SQL transformation's block/code tree with positional IDskbagent transformation show --config-id CONFIG-ID
Edit a SQL transformation's blocks/codes with positional operationskbagent transformation edit --config-id CONFIG-ID --change-description CHANGE-DESCRIPTION
List conditional flows (keboola.flow) across projectskbagent flow list
Show detailed conditional-flow information including phases and taskskbagent flow detail --project PROJECT --flow-id FLOW-ID
Print the conditional-flow YAML template, or --full for the JSON Schemakbagent flow schema
Show bundled example flow configurations (offline, no project needed)kbagent flow examples
Validate a conditional-flow definition (schema + semantic checks)kbagent flow validate --file FILE
Create a new conditional-flow (keboola.flow) configurationkbagent flow new --project PROJECT --name NAME
Update a flow's name, description, or phases/taskskbagent flow update --project PROJECT --flow-id FLOW-ID
Delete a conditional-flow (keboola.flow) configurationkbagent flow delete --project PROJECT --flow-id FLOW-ID
Bind a cron schedule to a flow (upsert: creates or updates)kbagent flow schedule --project PROJECT --flow-id FLOW-ID --cron CRON
Remove all schedules bound to a flow (deletes keboola.scheduler configs)kbagent flow schedule-remove --project PROJECT --flow-id FLOW-ID
List cron schedules (keboola.scheduler configs) across projectskbagent schedule list
Show full detail for a single cron schedulekbagent schedule detail --project PROJECT --schedule-id SCHEDULE-ID
Audit schedules by cron window or job-freshnesskbagent schedule find
List notification subscriptions (Flow Notifications tab) across projectskbagent notification list
Show one notification subscription, including its raw filter listkbagent notification detail --project PROJECT --subscription-id SUBSCRIPTION-ID
List development branches from connected projectskbagent branch list
Create a new development branch and auto-activate itkbagent branch create --project PROJECT --name NAME
Set an existing development branch as activekbagent branch use --project PROJECT --branch BRANCH
Reset the active branch back to main/productionkbagent branch reset --project PROJECT
Delete a development branchkbagent branch delete --project PROJECT --branch BRANCH
Get the KBC UI merge URL for a development branchkbagent branch merge --project PROJECT
List all metadata entries on a branchkbagent branch metadata-list --project PROJECT
Read a single metadata value by keykbagent branch metadata-get --project PROJECT --key KEY
Set a metadata key/value on a branchkbagent branch metadata-set --project PROJECT --key KEY
Delete a branch metadata entry by its numeric IDkbagent branch metadata-delete --project PROJECT --metadata-id METADATA-ID
Create a new workspacekbagent workspace create --project PROJECT
List workspaces from connected projectskbagent workspace list
Show workspace details (password NOT included)kbagent workspace detail --project PROJECT --workspace-id WORKSPACE-ID
Delete a workspacekbagent workspace delete --project PROJECT --workspace-id WORKSPACE-ID
Reset workspace password and show the new onekbagent workspace password --project PROJECT --workspace-id WORKSPACE-ID
Load tables into a workspacekbagent workspace load --project PROJECT --workspace-id WORKSPACE-ID --tables TABLES
Execute SQL query in a workspace via Query Servicekbagent workspace query --project PROJECT --workspace-id WORKSPACE-ID
Garbage-collect orphaned workspaceskbagent workspace gc
Create a workspace from a transformation configkbagent workspace from-transformation --project PROJECT --component-id COMPONENT-ID --config-id CONFIG-ID
Initialize a sync working directory for a Keboola projectkbagent sync init --project PROJECT
Download configurations from a Keboola project to local fileskbagent sync pull
Show which local configurations have been modified, added, or deletedkbagent sync status
Show detailed diff between local and remote configurationskbagent sync diff
Push local configuration changes to a Keboola projectkbagent sync push
Clone a reference project into a fresh target, parameterised by overrideskbagent sync clone --source SOURCE --target TARGET --target-dir TARGET-DIR
Link the current git branch to a Keboola development branchkbagent sync branch-link --project PROJECT
Remove the branch mapping for the current git branchkbagent sync branch-unlink
Show the branch mapping status for the current git branchkbagent sync branch-status
Encrypt #-prefixed secret values for a Keboola componentkbagent encrypt values --project PROJECT --component-id COMPONENT-ID --input INPUT-DATA
Encrypt the project's storage token for transformation user_propertieskbagent semantic-layer token --project PROJECT --component-id COMPONENT-ID
Build a semantic-layer model from a list of storage tables (non-interactive)kbagent semantic-layer build --project PROJECT
Promote a model from one project to another (NEW + overwrite CHANGED; never deletes)kbagent semantic-layer promote --from-project FROM-PROJECT --to-project TO-PROJECT
Replay a snapshot into a project.kbagent semantic-layer import --project PROJECT --file FILE
Show the entities in a semantic-layer modelkbagent semantic-layer show --project PROJECT
Fetch the server-side JSON Schema of semantic object typeskbagent semantic-layer schema --project PROJECT
Snapshot a semantic-layer model to a self-describing JSON filekbagent semantic-layer export --project PROJECT
Diff two semantic-layer snapshots (project↔project, project↔file, file↔file)kbagent semantic-layer diff
Validate a semantic-layer modelkbagent semantic-layer validate --project PROJECT
Search semantic-layer entities across a project by name patternkbagent semantic-layer search-context --project PROJECT
Fetch a single semantic-layer entity by id, irrespective of its typekbagent semantic-layer get-context --project PROJECT --context-id CONTEXT-ID
List all semantic-layer models in a projectkbagent semantic-layer model list --project PROJECT
Create a new semantic-layer modelkbagent semantic-layer model create --project PROJECT --name NAME
Delete a semantic-layer model and cascade-delete its childrenkbagent semantic-layer model delete --project PROJECT --model MODEL
Add a metric to a semantic-layer modelkbagent semantic-layer add metric --project PROJECT --name NAME --sql SQL --dataset DATASET
Add a dataset (FQN derived from tableId)kbagent semantic-layer add dataset --project PROJECT --name NAME --table-id TABLE-ID
Add a relationship between two datasetskbagent semantic-layer add relationship --project PROJECT --name NAME --from FROM- --to TO --on ON
Add a constraintkbagent semantic-layer add constraint --project PROJECT --name NAME --constraint-type CONSTRAINT-TYPE --rule RULE --metrics METRICS
Add a glossary termkbagent semantic-layer add glossary --project PROJECT --term TERM
Edit a metric.kbagent semantic-layer edit metric --project PROJECT --name NAME
Edit a dataset (no cascade — metric.dataset uses tableId, not name)kbagent semantic-layer edit dataset --project PROJECT --name NAME
Edit a constraint (DELETE+POST, with local validators)kbagent semantic-layer edit constraint --project PROJECT --name NAME
Edit a relationship (DELETE+POST).kbagent semantic-layer edit relationship --project PROJECT --name NAME
Edit a glossary term.kbagent semantic-layer edit glossary --project PROJECT --term TERM
Remove a metric.kbagent semantic-layer remove metric --project PROJECT --name NAME
Remove a datasetkbagent semantic-layer remove dataset --project PROJECT --name NAME
Remove a constraintkbagent semantic-layer remove constraint --project PROJECT --name NAME
Remove a relationship.kbagent semantic-layer remove relationship --project PROJECT --name NAME
Remove a glossary term.kbagent semantic-layer remove glossary --project PROJECT --term TERM
List reference-data records (dimension summaries; use get for members)kbagent semantic-layer reference-data list --project PROJECT
Fetch one record (all members) by --id or by --dimensionkbagent semantic-layer reference-data get --project PROJECT
Create or replace a reference-data record (keyed by dimension)kbagent semantic-layer reference-data set --project PROJECT --dimension DIMENSION --members-file MEMBERS-FILE
Delete a reference-data record by UUID (server-side soft-delete)kbagent semantic-layer reference-data delete --project PROJECT --id ID-
Encrypt the project's storage token for transformation user_propertieskbagent sl token --project PROJECT --component-id COMPONENT-ID
Build a semantic-layer model from a list of storage tables (non-interactive)kbagent sl build --project PROJECT
Promote a model from one project to another (NEW + overwrite CHANGED; never deletes)kbagent sl promote --from-project FROM-PROJECT --to-project TO-PROJECT
Replay a snapshot into a project.kbagent sl import --project PROJECT --file FILE
Show the entities in a semantic-layer modelkbagent sl show --project PROJECT
Fetch the server-side JSON Schema of semantic object typeskbagent sl schema --project PROJECT
Snapshot a semantic-layer model to a self-describing JSON filekbagent sl export --project PROJECT
Diff two semantic-layer snapshots (project↔project, project↔file, file↔file)kbagent sl diff
Validate a semantic-layer modelkbagent sl validate --project PROJECT
Search semantic-layer entities across a project by name patternkbagent sl search-context --project PROJECT
Fetch a single semantic-layer entity by id, irrespective of its typekbagent sl get-context --project PROJECT --context-id CONTEXT-ID
List all semantic-layer models in a projectkbagent sl model list --project PROJECT
Create a new semantic-layer modelkbagent sl model create --project PROJECT --name NAME
Delete a semantic-layer model and cascade-delete its childrenkbagent sl model delete --project PROJECT --model MODEL
Add a metric to a semantic-layer modelkbagent sl add metric --project PROJECT --name NAME --sql SQL --dataset DATASET
Add a dataset (FQN derived from tableId)kbagent sl add dataset --project PROJECT --name NAME --table-id TABLE-ID
Add a relationship between two datasetskbagent sl add relationship --project PROJECT --name NAME --from FROM- --to TO --on ON
Add a constraintkbagent sl add constraint --project PROJECT --name NAME --constraint-type CONSTRAINT-TYPE --rule RULE --metrics METRICS
Add a glossary termkbagent sl add glossary --project PROJECT --term TERM
Edit a metric.kbagent sl edit metric --project PROJECT --name NAME
Edit a dataset (no cascade — metric.dataset uses tableId, not name)kbagent sl edit dataset --project PROJECT --name NAME
Edit a constraint (DELETE+POST, with local validators)kbagent sl edit constraint --project PROJECT --name NAME
Edit a relationship (DELETE+POST).kbagent sl edit relationship --project PROJECT --name NAME
Edit a glossary term.kbagent sl edit glossary --project PROJECT --term TERM
Remove a metric.kbagent sl remove metric --project PROJECT --name NAME
Remove a datasetkbagent sl remove dataset --project PROJECT --name NAME
Remove a constraintkbagent sl remove constraint --project PROJECT --name NAME
Remove a relationship.kbagent sl remove relationship --project PROJECT --name NAME
Remove a glossary term.kbagent sl remove glossary --project PROJECT --term TERM
List reference-data records (dimension summaries; use get for members)kbagent sl reference-data list --project PROJECT
Fetch one record (all members) by --id or by --dimensionkbagent sl reference-data get --project PROJECT
Create or replace a reference-data record (keyed by dimension)kbagent sl reference-data set --project PROJECT --dimension DIMENSION --members-file MEMBERS-FILE
Delete a reference-data record by UUID (server-side soft-delete)kbagent sl reference-data delete --project PROJECT --id ID-
GET an endpoint on the running kbagent servekbagent http get <PATH>
POST to an endpoint on the running kbagent servekbagent http post <PATH>
PATCH an endpoint on the running kbagent servekbagent http patch <PATH>
DELETE an endpoint on the running kbagent servekbagent http delete <PATH>
List all registered agent taskskbagent agent list
Show one task's full configurationkbagent agent show [TASK-ID]
Register a new scheduled taskkbagent agent create --name NAME
Patch one or more fields on a task.kbagent agent update [TASK-ID]
Remove a task.kbagent agent delete [TASK-ID]
Trigger a task immediately (does not wait for the next cron firing)kbagent agent run [TASK-ID]
Show the run history of a task (most recent first)kbagent agent runs [TASK-ID]
Show a single AgentRun record (status, summary, output, error)kbagent agent run-detail [TASK-ID] [RUN-ID]
Replay the persisted event timeline of an ai_agent run (line-by-line)kbagent agent run-events [TASK-ID] [RUN-ID]
Execute an action ad-hoc (no persistence, no scheduling)kbagent agent test
Show the next N firings of a cron expressionkbagent agent cron-preview --cron CRON
Polish a plain-English goal into an unattended-agent-ready promptkbagent agent prompt-improve --goal GOAL
List Developer Portal apps for a vendorkbagent dev-portal list --vendor VENDOR
Show the full Developer Portal entry for one appkbagent dev-portal get --app APP
Create (register) a new app in the Developer Portal.kbagent dev-portal create --vendor VENDOR --data DATA
Patch one or more properties of an existing Developer Portal app.kbagent dev-portal patch --app APP
Upload a 128x128 PNG icon for a Developer Portal app.kbagent dev-portal upload-icon --app APP --file FILE
Publish an app in the Developer Portal (requests Keboola review).kbagent dev-portal publish --app APP
Deprecate an app in the Developer Portal (hides it, blocks new configs).kbagent dev-portal deprecate --app APP
Add a Developer Portal identity (verifies creds before persisting)kbagent dev-portal identity add --alias ALIAS --username USERNAME
List configured Developer Portal identitieskbagent dev-portal identity list
Remove a Developer Portal identitykbagent dev-portal identity remove --alias ALIAS
Edit fields on a Developer Portal identity (or rename it)kbagent dev-portal identity edit --alias ALIAS
Set the default Developer Portal identitykbagent dev-portal identity use <ALIAS>
Show the alias of the default Developer Portal identitykbagent dev-portal identity current
Probe a Developer Portal identity by logging inkbagent dev-portal identity verify

Sync pull notable flags

FlagEffect
--with-samplesDownload CSV data previews (tables >30 columns auto-trimmed to first 30)
--job-limit NMax recent jobs per config (default 5)
--no-storageSkip storage bucket/table metadata
--no-jobsSkip per-config job history
--sample-limit NMax rows per sample (default 100)
--max-samples NMax tables to sample (default 50)

Response format

All JSON responses follow one of two shapes:

Success:

{"status": "ok", "data": ...}

Error:

{"status": "error", "error": {"code": "ERROR_CODE", "message": "...", "retryable": true}}

Check the retryable field -- if true, retry the operation.

For detailed response parsing rules and common pitfalls, see gotchas.

Workflow references

WorkflowReference
All commands cheat sheetcommands-reference
Safe config write workflow (fetch → dry-run → confirm → push)safe-write-workflow
Creating new configurationsscaffold-workflow
SQL transformations (create / show / edit; the show-before-edit rule for positional block/code ids)transformation-workflow
Workspace SQL debuggingworkspace-workflow
Agent Tasks via CLI (kbagent agent CRUD + run + cron-preview + prompt-improve; cron / manual / chained; cli_command / ai_agent action flavours)agent-tasks-cli-workflow
Agent Tasks via REST (kbagent http <verb> /agents... from inside scheduled subprocesses; SSE streaming)agent-tasks-rest-workflow
Data apps (create / deploy / start / stop / password / delete; the §9 redeploy contract)data-app-workflow
Storage Files (upload, download, tags, load/unload)storage-files-workflow
Table snapshots (point-in-time backup; restore as a NEW table; --name required, no overwrite)snapshot-workflow
Python library (from keboola_agent_cli import Client -- in-process query + Storage Files, no CLI/daemon/config-dir)library-workflow
Data Streams (OTLP / OpenTelemetry) (create/inspect OTLP source, masked secret-in-URL, OTEL_EXPORTER_OTLP_ENDPOINT)stream-workflow
Storage column types (native types, NOT NULL, DEFAULT, branch materialize)storage-types-workflow
Typify a typeless table (profile -> CTAS -> swap-tables -> validate -> handoff)typify-table-workflow
Bucket sharing & linkingsharing-workflow
Project members & invitations (single + bulk via CSV, role change, remove)member-workflow
Billing / PAYG credits (balance only; the shape of the invoice-history gap; PAYG_NOT_AVAILABLE; units)billing-workflow
Dev branchesbranch-workflow
Encrypting secrets before a config writeencrypt-workflow
Sync & Git-branching (GitOps)sync-workflow
Sync row-level internals (manifest v3, hoist, encryption)sync-rows-workflow
Promote configs source -> destination project (from-scratch GitHub Actions pull -> validate -> push pipeline built on sync; PR-gated, cross-project dry-run diff) -- a separate skill, not a reference dockbagent-promotion-pipeline
Migrating a kbc (keboola-as-code) GitHub CI/CD pipeline to kbagent synckbagent-cicd-migration (sibling skill)
Variables (attach to any config)variables-workflow
Reading synced datareading-synced-data
SQL migration (input mapping removal)sql-migration-workflow
Semantic layer (metastore) -- models, metrics, datasets, constraints, glossary; validate / export / diff / promote / build / tokensemantic-layer-workflow
Developer Portal (identity CRUD, list/get apps, create/patch/upload-icon/publish/deprecate; TTY-confirm on writes)dev-portal-workflow
Config metadata (list/get/set/delete arbitrary key-value metadata on a configuration)config-metadata-workflow
Storage descriptions (describe bucket / table / column, batch from YAML)storage-describe-workflow
Deep column-level lineage (lineage build --ai, column graph, ER + HTML output)lineage-deep-workflow
Session permissions firewall (--deny-writes / --deny-destructive, persisted policies, permissions check)permissions-workflow
Kai (project-aware AI Q&A: ping / preflight / ask / chat / history)kai-workflow
Programmatic auth (browser login: PKCE/device flow, auth login/status/logout; HUMAN-ONLY, never run headlessly)auth-workflow
Response parsing gotchasgotchas

First-time setup

If kbagent is not yet installed:

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

Then add projects:

# Single project
kbagent --json project add --project prod --url https://connection.keboola.com --token YOUR_TOKEN

# Or bulk-onboard from organization (org admin)
# Manage token: interactive prompt by default; for CI add --allow-env-manage-token
# alongside KBC_MANAGE_API_TOKEN (required since v0.29.0).
KBC_MANAGE_API_TOKEN=xxx kbagent --allow-env-manage-token --json org setup --org-id 123 --url https://connection.keboola.com --yes

# Or onboard specific projects (any project member, uses Personal Access Token)
KBC_MANAGE_API_TOKEN=xxx kbagent --allow-env-manage-token --json org setup --project-ids 901,9621,10539 --url https://connection.keboola.com --yes

Installing this plugin

This plugin ships through Keboola's keboola-claude-kit marketplace, published from keboola/ai-kit. To (re)install it in Claude Code:

/plugin marketplace add keboola/ai-kit
/plugin install kbagent@keboola-claude-kit

Copies installed from the older keboola-agent-cli marketplace (this CLI's own repo) still work and still update, but that entry is deprecated -- the two lines above are how a user moves to the maintained one.

Frequently asked questions

What to verify before installation and use

What does the kbagent source document cover?

Covers: exploring and searching configurations, job history, data lineage, dev branches, workspace SQL debugging, GitOps config sync (pull/push/diff/clone), bucket sharing and linking, encrypting secrets, Storage tables, files, and snapshots (backup/restore), data apps (deploy/logs/secrets), flows and schedules, members and invitations, feature flags, OTLP…

How do I install kbagent?

The source record exposes this install command: npx skills add https://github.com/keboola/cli --skill "plugins/kbagent/skills/kbagent". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged network, exec-script, write-files, read-files in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 9169,312

ruvnet/ruflo

github-release-management

Comprehensive GitHub release orchestration with AI swarm coordination for automated versioning, testing, deployment, and rollback management

Computed 9091,519

ruvnet/RuView

github-release-management

Comprehensive GitHub release orchestration with AI swarm coordination for automated versioning, testing, deployment, and rollback management

Computed 92717

MicrosoftDocs/Agent-Skills

azure-data-factory

Expert knowledge for Azure Data Factory development including troubleshooting, best practices, decision making, architecture & design patterns, limits & quotas, security, configuration, integrations & coding patterns, and deployment. Use when building ADF pipelines with data flows, SHIR/SSIS IR, VNets/private endpoints, CI/CD templates, or SAP CDC, and other Azure Data Factory related development tasks. Not for Azure Synapse Analytics (use azure-synapse-analytics), Azure Databricks (use azure-da

Computed 92717

MicrosoftDocs/Agent-Skills

azure-migrate

Expert knowledge for Azure Migrate development including troubleshooting, best practices, decision making, architecture & design patterns, limits & quotas, security, configuration, integrations & coding patterns, and deployment. Use when configuring Azure Migrate projects/appliances, VMware/Hyper-V discovery, SQL/PostgreSQL assessments, AppCAT, or Resource Mover, and other Azure Migrate related development tasks. Not for Azure Database Migration Service (use azure-database-migration), Azure Site