ragrails chat with no query argument. This is separate from the stateless rag.chat() SDK method, which does not execute tools. The SDK exposes the lower-level tool-calling API, but your application owns tool execution and approval.
Start the interactive chat
CLI
Why this is CLI-only today
rag.chat() is a stateless RAG turn: it retrieves context, calls the LLM, and returns a ChatResult. It does not own a user session, approval UI, authorization policy, request allowlist, or audit log.
The interactive CLI can safely provide built-in tools because it has a human in the loop. Before a side-effecting api_call runs, the CLI validates the arguments and asks the user to confirm the exact request.
For SDK apps, those decisions are application-specific. Use Tool Calling to build a tool loop where your app controls validation, permissions, confirmation, execution, and logging.
Built-in tools
The
/tools command lists registered tools, required fields, and confirmation policy.
Tool safety model
- The model proposes a provider-neutral tool call.
- Ragrails validates required arguments and schema-specific rules.
- Tools requiring confirmation pause for user approval.
- Declined or invalid calls are not executed; the model receives a tool result explaining why.
- The loop stops when the model returns final text or reaches the maximum tool iterations.
api_call validation requires:
When agentic tools help
Boundaries
Reference: CLI chat and Tool Calling.

