Skip to content

Chat Actions

Chat Actions is Kindo’s umbrella name for three orthogonal opt-in extensions on /v1/responses:

  1. Curated system prompt — let Kindo prepend its operational prompt.
  2. Kindo-hosted tools — call kindo_shell, kindo_web_search, and the rest of the Kindo hosted-tool catalog.
  3. Stateful conversations — let Kindo persist messages server-side so subsequent turns chain off them.

Each is independent. Default behavior on every API surface is stock provider behavior — Kindo does not silently inject prompts, tools, or state. You opt in explicitly, per request, when you want Kindo’s added value.

/v1/chat/completions and /v1/messages are stock OpenAI and stock Anthropic respectively. They do not accept the Chat Actions opt-ins; if you need the curated prompt, hosted tools, or stateful conversations, use /v1/responses.

Why Chat Actions exist

Different teams want different mixes:

  • A platform team running their own agent loop wants Kindo’s governance, but not Kindo’s prompt or tools.
  • An ops team running ad-hoc investigations wants the full Kindo agent — curated prompt, hosted tools, persistent conversation.
  • A SOC team wants Kindo’s tool catalog and statefulness, but their own carefully-tuned system prompt.

Bundling these three concerns into a single mode switch (the old tools: [{type: "kindo_tools"}] sentinel) collapses the space. Chat Actions splits them apart so each request expresses exactly what it wants.

How it looks on /v1/responses

ConcernField
Curated system promptkindo.system_prompt: "agent_default"
Hosted tools (full)tools: [{type: "kindo_tools"}]
Hosted tools (individual)tools: [{type: "kindo_shell"}, ...]
Stateful conversationstore: true + conversation (spec-native)

For the field-level spec, see Responses → Chat Actions extensions.

The hosted-tool catalog

Tool typePurpose
kindo_shellRun a sandboxed shell command on a Kindo-managed agent workstation.
kindo_web_searchSearch the web.
kindo_browser_controlDrive a headless browser session.
kindo_browser_screenshotCapture a screenshot of the current page.
kindo_browser_list_network_requestsList network requests captured by the browser tool.
kindo_browser_export_request_as_curlExport a captured request as a runnable curl command.
kindo_file_readRead a file the agent has access to.
kindo_file_writeWrite to a file the agent has access to.
kindo_file_listList files in an accessible directory.
kindo_web_downloadDownload a URL to the agent workspace.
kindo_files_download_originalFetch the original binary of a previously stored file.
kindo_files_download_as_textFetch a previously stored file as decoded text.
kindo_file_share_with_userShare a file with a Kindo user.
kindo_vpn_connectConnect the agent’s network egress to an organization VPN.
kindo_vpn_disconnectDisconnect from the organization VPN.
kindo_dashboard_generateGenerate a Kindo dashboard.
kindo_dashboard_updateUpdate a Kindo dashboard.
kindo_knowledge_store_searchSearch a Kindo knowledge store.

Tool types not in this list are forwarded verbatim, so new types work as soon as they’re hosted.

The four common combinations

All examples below are /v1/responses requests.

A. Stock provider behavior (default)

Send no Chat Actions opt-ins. You get exactly what calling OpenAI directly would give you, plus Kindo’s governance.

B. “I want Kindo’s tools, but my own prompt”

{
"tools": [{ "type": "kindo_tools" }]
}

Hosted tools turn on; your instructions / system / messages flow through verbatim.

C. “I want Kindo’s prompt and tools, but I’ll manage state myself”

{
"store": true,
"kindo": { "system_prompt": "agent_default" },
"tools": [{ "type": "kindo_tools" }]
}

The API auto-creates a conversation and returns the new ID in conversation.id. To stay stateless, discard that ID and do not pass it back.

D. “I want the full Kindo agent experience”

{
"store": true,
"kindo": { "system_prompt": "agent_default" },
"conversation": "conv_...",
"tools": [{ "type": "kindo_tools" }]
}

Mixing Kindo-hosted tools with stock function tools

You can mix Kindo-hosted entries ({type: "kindo_*"}) with stock OpenAI function tools in the same tools array on /v1/responses. The hosted-tool shape is uniform; the function-tool shape follows the per-API canonical form. See Responses tool use for the function-tool round trip.

See also