/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
- 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.
- 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.
- 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.
/kbagent:setupcannot 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
/kbagent:setupfinishes/plugin marketplace add keboola/ai-kitauth loginto the user's terminalhttps://github.com/keboola/ai-kit. Thekeboola/ai-kitshort form is rejected with[invalid_argument] Error/kbagent:setupreturns "Unknown command",/pluginreturns "/plugin isn't available in this environment"In Cursor the command got as far as: CLI present (v0.91.0),
project listempty, then stopped with "browser login has to happen in your terminal" and printedkbagent auth login --stack <url> --register-projectsfor 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.mdstep 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
auth loginbackgrounded, since the failure the rule guards against is a foreground timeout killing PKCE mid-flow, not the login itself being unsafe.setupdetect that it cannot complete and say so up front, rather than after two of its four steps./kbagent:setupis the right shape there. Only the login policy is in the way./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.[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.