Chat Actions
Chat Actions is Kindo’s umbrella name for three orthogonal
opt-in extensions on /v1/responses:
- Curated system prompt — let Kindo prepend its operational prompt.
- Kindo-hosted tools — call
kindo_shell,kindo_web_search, and the rest of the Kindo hosted-tool catalog. - 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
| Concern | Field |
|---|---|
| Curated system prompt | kindo.system_prompt: "agent_default" |
| Hosted tools (full) | tools: [{type: "kindo_tools"}] |
| Hosted tools (individual) | tools: [{type: "kindo_shell"}, ...] |
| Stateful conversation | store: true + conversation (spec-native) |
For the field-level spec, see Responses → Chat Actions extensions.
The hosted-tool catalog
| Tool type | Purpose |
|---|---|
kindo_shell | Run a sandboxed shell command on a Kindo-managed agent workstation. |
kindo_web_search | Search the web. |
kindo_browser_control | Drive a headless browser session. |
kindo_browser_screenshot | Capture a screenshot of the current page. |
kindo_browser_list_network_requests | List network requests captured by the browser tool. |
kindo_browser_export_request_as_curl | Export a captured request as a runnable curl command. |
kindo_file_read | Read a file the agent has access to. |
kindo_file_write | Write to a file the agent has access to. |
kindo_file_list | List files in an accessible directory. |
kindo_web_download | Download a URL to the agent workspace. |
kindo_files_download_original | Fetch the original binary of a previously stored file. |
kindo_files_download_as_text | Fetch a previously stored file as decoded text. |
kindo_file_share_with_user | Share a file with a Kindo user. |
kindo_vpn_connect | Connect the agent’s network egress to an organization VPN. |
kindo_vpn_disconnect | Disconnect from the organization VPN. |
kindo_dashboard_generate | Generate a Kindo dashboard. |
kindo_dashboard_update | Update a Kindo dashboard. |
kindo_knowledge_store_search | Search 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
- Responses → Chat Actions extensions — full field-level spec.
- Responses quickstart — stock-OpenAI baseline before any extensions.