The controller integrations CLI surface exposes read and call operations (list, search, tools, describe, call, request, status) and a single write operation (create). It is missing delete, which leaves agents — and the user driving them through the in-app settings — without a way to remove a connection once it has been created.
The server side already supports it: DELETE /api/integrations/:id exists in server/routes/integrations.ts (around line 89) and is wired to deleteConnection. The CLI just doesn't wrap it.
Repro
- From a project, ask the agent to stand up a custom integration, e.g. a Cloudflare MCP connection:
controller integrations create \
--name "Cloudflare" \
--transport-mode mcp \
--transport-config url=https://mcp.cloudflare.com/mcp \
--scheme-acquisition oauth_dynamic \
--scheme-attachment header:Authorization --scheme-attachment-prefix "Bearer "
- Try to remove it:
controller integrations delete "Cloudflare"
# controller integrations: Unknown integrations command: delete
Why this matters
A user (or agent) who picks the wrong --scheme-acquisition at creation time currently has no CLI path to fix the connection — the auth mode is fixed at creation, and the only workaround is to delete the old entry and create a fresh one. Today, that "delete" step has to happen either in the desktop app's Settings UI or by curl -X DELETE against the local server, neither of which is scriptable from the agent.
Proposed change
Add an integrations delete subcommand that calls the existing DELETE /api/integrations/:id endpoint. It should accept either a connection id (UUID) or a name, mirroring the lookup behavior of integrations status / tools / call, so users don't have to look up the id first. On success, print a short confirmation; on a 404, print a clear "not found" message.
Out of scope
I'm explicitly not asking for integrations update in this issue. The server has a corresponding PATCH route, but a separate ticket is a better place for that — it has its own design questions (which fields are mutable, how to handle a static-to-oauth_dynamic migration, etc.).
The
controller integrationsCLI surface exposes read and call operations (list,search,tools,describe,call,request,status) and a single write operation (create). It is missingdelete, which leaves agents — and the user driving them through the in-app settings — without a way to remove a connection once it has been created.The server side already supports it:
DELETE /api/integrations/:idexists inserver/routes/integrations.ts(around line 89) and is wired todeleteConnection. The CLI just doesn't wrap it.Repro
Why this matters
A user (or agent) who picks the wrong
--scheme-acquisitionat creation time currently has no CLI path to fix the connection — the auth mode is fixed at creation, and the only workaround is to delete the old entry andcreatea fresh one. Today, that "delete" step has to happen either in the desktop app's Settings UI or bycurl -X DELETEagainst the local server, neither of which is scriptable from the agent.Proposed change
Add an
integrations deletesubcommand that calls the existingDELETE /api/integrations/:idendpoint. It should accept either a connection id (UUID) or a name, mirroring the lookup behavior ofintegrations status/tools/call, so users don't have to look up the id first. On success, print a short confirmation; on a 404, print a clear "not found" message.Out of scope
I'm explicitly not asking for
integrations updatein this issue. The server has a corresponding PATCH route, but a separate ticket is a better place for that — it has its own design questions (which fields are mutable, how to handle astatic-to-oauth_dynamicmigration, etc.).