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
Section titled “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
Section titled “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
Section titled “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
Section titled “The four common combinations”All examples below are /v1/responses requests.
A. Stock provider behavior (default)
Section titled “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”
Section titled “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”
Section titled “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”
Section titled “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
Section titled “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
Section titled “See also”- Responses → Chat Actions extensions — full field-level spec.
- Responses quickstart — stock-OpenAI baseline before any extensions.