pub async fn query(
prompt: InputPrompt,
options: Option<ClaudeAgentOptions>,
transport: Option<Box<dyn Transport>>,
) -> Result<Vec<Message>>Expand description
Sends a one-off query to Claude Code and returns all response messages.
This is the simplest entry point for interacting with Claude Code. It handles the full lifecycle: connecting, initializing, sending the prompt, collecting all messages, and disconnecting.
§Arguments
prompt— The input prompt (text or structured messages).options— OptionalClaudeAgentOptionsfor configuration. Defaults toClaudeAgentOptions::default()ifNone.transport— Optional customTransportimplementation. IfNone, the defaultSubprocessCliTransportis used.
§Returns
A Vec<Message> containing all messages from the interaction, including
user echoes, assistant responses, system messages, and the final result.
§Example
let messages = query(
InputPrompt::Text("Explain Rust ownership".to_string()),
Some(ClaudeAgentOptions {
permission_mode: Some(PermissionMode::BypassPermissions),
max_turns: Some(1),
..Default::default()
}),
None,
).await?;
for msg in &messages {
if let Message::Result(result) = msg {
println!("Cost: ${:.4}", result.total_cost_usd.unwrap_or(0.0));
}
}