Skip to content

kbagent: /kbagent:setup cannot complete login in-chat, in any client #704

Description

@eruveo

/kbagent:setup cannot finish setup in any client today, because the browser login is always handed back to the user's terminal. Verified across three clients on 2026-08-26.

What was tested

Client Adds the marketplace Runs plugin slash commands /kbagent:setup finishes
Claude Code /plugin marketplace add keboola/ai-kit yes no — hands auth login to the user's terminal
Cursor UI only, and it needs the full URL https://github.com/keboola/ai-kit. The keboola/ai-kit short form is rejected with [invalid_argument] Error yes no — same handoff
Claude Desktop UI only (Customise → Plugins → Add → Add from marketplace) no/kbagent:setup returns "Unknown command", /plugin returns "/plugin isn't available in this environment" n/a

In Cursor the command got as far as: CLI present (v0.91.0), project list empty, then stopped with "browser login has to happen in your terminal" and printed kbagent auth login --stack <url> --register-projects for the user to run.

Correction to an earlier version of this issue. Cursor being usable at all in that session came from a login done earlier in Claude Code, not from anything Cursor did. All clients read the same local config, so once any one of them is signed in the others inherit it, and a client can look like it completed setup when all it did is find someone else's session. Worth keeping in mind when testing this: log out first, or you are testing the shared config rather than the client.

Why it stops

plugins/kbagent/commands/setup.md step 3 treats browser login as a human action the agent must not attempt. That is a defensible rule, but the consequence is that the one command we tell users to run cannot complete on its own, in any client. The documented "three commands and you are set up" flow is really "three commands, then go to a terminal anyway".

Asks

  1. Make login completable from a chat client. Something has to open the browser and see PKCE through without the user changing windows to a terminal. Options worth weighing rather than one prescribed fix:
    • Let the agent run auth login backgrounded, since the failure the rule guards against is a foreground timeout killing PKCE mid-flow, not the login itself being unsafe.
    • Or a device-code path the agent can drive and surface, with the user only approving in the browser.
    • Or have setup detect that it cannot complete and say so up front, rather than after two of its four steps.
  2. The delivery mechanism has to differ by client, because a command cannot reach Claude Desktop.
    • Cursor already runs plugin slash commands, so /kbagent:setup is the right shape there. Only the login policy is in the way.
    • Claude Desktop has no command surface at all, so nothing prefixed / will ever reach it however the plugin is installed. Setup has to arrive as a skill the agent invokes from natural language ("set up Keboola", "log me out"), not as a command. The plugin already ships skills, so this is a question of teaching one the setup and logout verbs rather than adding a surface.
  3. Document the per-client marketplace source format. Cursor's full-URL requirement is not discoverable and the error is [invalid_argument] Error, which says nothing.

Why it matters now

keboola/ui#8104, keboola/keboola_com#531 and keboola/connection-docs#1095 all document the setup command. They have been written around these limits (Claude Desktop is on the manual flow, Cursor keeps install-connect-verify), so nothing is currently lying to users. But the short flow only becomes real once login can complete in-chat, and that is this issue.

One nice thing found while testing, worth keeping: login is shared across clients. Signing in from any tool is picked up by the others, because they all read the same local config. That is worth saying out loud in the docs, and worth not breaking.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions