pub struct AgentConfig {Show 16 fields
pub name: String,
pub description: Option<String>,
pub system_prompt: String,
pub allowed_tools: Vec<String>,
pub disallowed_tools: Vec<String>,
pub model: Option<String>,
pub base_url: Option<String>,
pub provider: Option<String>,
pub max_tokens: Option<u32>,
pub temperature: Option<f64>,
pub thinking_budget: Option<u32>,
pub reasoning_effort: Option<String>,
pub max_context_tokens: Option<usize>,
pub max_iterations: Option<u32>,
pub write_access: bool,
pub skip_memory: bool,
}Expand description
Top-level agent configuration loaded from JSON.
Place agent JSON files in:
agents/(project-level, highest priority)~/.config/koda/agents/(user-level)- Built-in (embedded at compile time, lowest priority)
§Example
{
"name": "testgen",
"system_prompt": "You are a test generation specialist.",
"model": "gemini-2.5-flash",
"write_access": true,
"allowed_tools": ["Read", "Write", "Edit", "Bash", "Grep", "Glob"],
"max_iterations": 20
}§Fields
name— Agent identifier (used withInvokeAgent)system_prompt— Behavioral instructions for the LLMallowed_tools— Allowlist (empty = all tools available)disallowed_tools— Denylist (excluded even ifallowed_toolsis empty)model— Override the default model (e.g."gemini-2.5-flash"for cheap workers)write_access— Grant Write/Edit/Delete tools (default:false)max_iterations— Cap inference loops (prevents runaway agents)
Fields§
§name: StringAgent identifier.
description: Option<String>One-line description shown in the main agent’s system prompt listing. Optional — agents without a description are listed by name only.
system_prompt: StringSystem prompt template.
allowed_tools: Vec<String>Allowlisted tool names (empty = all tools).
disallowed_tools: Vec<String>Denylisted tool names — excluded even if allowed_tools is empty.
model: Option<String>Override model identifier.
base_url: Option<String>Override API base URL.
provider: Option<String>Override provider type.
max_tokens: Option<u32>Override max output tokens.
temperature: Option<f64>Override temperature.
thinking_budget: Option<u32>Override thinking budget (Anthropic extended thinking).
reasoning_effort: Option<String>Override reasoning effort (OpenAI reasoning models).
max_context_tokens: Option<usize>Override max context window tokens.
max_iterations: Option<u32>Override max inference iterations.
write_access: boolGrant write access (Write/Edit/Delete tools). Default: false.
Sub-agents are read-only by default (principle of least privilege).
Set to true for agents that need to create or modify files.
skip_memory: boolSkip injecting project/global memory into the system prompt. Default: false. Read-only agents (explore, plan) don’t need memory context — skipping it saves tokens without affecting their ability to search the codebase.
Trait Implementations§
Source§impl Clone for AgentConfig
impl Clone for AgentConfig
Source§fn clone(&self) -> AgentConfig
fn clone(&self) -> AgentConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AgentConfig
impl Debug for AgentConfig
Source§impl<'de> Deserialize<'de> for AgentConfig
impl<'de> Deserialize<'de> for AgentConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for AgentConfig
impl RefUnwindSafe for AgentConfig
impl Send for AgentConfig
impl Sync for AgentConfig
impl Unpin for AgentConfig
impl UnsafeUnpin for AgentConfig
impl UnwindSafe for AgentConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more