Decide an approval
- HTTP approve
- HTTP deny
- WebSocket
Approval outcomes
Harnest does not restart the tool or replay earlier work.
Recover a response
Every neutral JSON, SSE, and WebSocket invocation has a response ID. Poll it with the same authenticated user and session:requires_action, its approval or client-tool ID. Do not infer task identity from chat messages.
Completed responses survive restarts with a Harnest-owned checkpointer. Pending approvals and client-tool exchanges must return to their owning process.
Advanced mode cannot guarantee recovery across native boundaries you replace.
Submit a client-tool result
- HTTP
- WebSocket
@client_input, the action also includes privateInput: true and inputSchema. Send the private form through the same HTTP output field or WebSocket result frame. Harnest delivers it only to the application handler and returns the separately authored public response. Keep the submitted value out of client transcripts and telemetry. AG-UI clients use an explicit interrupt resume.
Human approval authoring
Choose always-on or dynamic approval and bind it to the exact operation.
Client-hosted tools
Declare typed work owned by the connected client.
Development stores are process-local. Durable terminal recovery needs a Harnest-owned checkpointer; resuming an unfinished action also needs the process that owns that suspension.