pub struct CodeModeConfig {Show 31 fields
pub enabled: bool,
pub allow_mutations: bool,
pub allowed_mutations: HashSet<String>,
pub blocked_mutations: HashSet<String>,
pub allow_introspection: bool,
pub blocked_fields: HashSet<String>,
pub allowed_queries: HashSet<String>,
pub blocked_queries: HashSet<String>,
pub openapi_reads_enabled: bool,
pub openapi_allow_writes: bool,
pub openapi_allowed_writes: HashSet<String>,
pub openapi_blocked_writes: HashSet<String>,
pub openapi_allow_deletes: bool,
pub openapi_allowed_deletes: HashSet<String>,
pub openapi_blocked_paths: HashSet<String>,
pub openapi_internal_blocked_fields: HashSet<String>,
pub openapi_output_blocked_fields: HashSet<String>,
pub openapi_require_output_declaration: bool,
pub action_tags: HashMap<String, String>,
pub max_depth: u32,
pub max_field_count: u32,
pub max_cost: u32,
pub allowed_sensitive_categories: HashSet<String>,
pub token_ttl_seconds: i64,
pub auto_approve_levels: Vec<RiskLevel>,
pub max_query_length: usize,
pub max_result_rows: usize,
pub query_timeout_seconds: u32,
pub server_id: Option<String>,
pub sdk_operations: HashSet<String>,
pub operations: Vec<OperationEntry>,
}Expand description
Configuration for Code Mode.
Fields§
§enabled: boolWhether Code Mode is enabled for this server
allow_mutations: boolWhether to allow mutations (MVP: false)
allowed_mutations: HashSet<String>Allowed mutation names (whitelist). If empty and allow_mutations=true, all are allowed.
blocked_mutations: HashSet<String>Blocked mutation names (blacklist). Always blocked even if allow_mutations=true.
allow_introspection: boolWhether to allow introspection queries
blocked_fields: HashSet<String>Fields that should never be returned (Type.field format) - GraphQL
allowed_queries: HashSet<String>Allowed query names (whitelist). If empty and mode is allowlist, none are allowed.
blocked_queries: HashSet<String>Blocked query names (blocklist). Always blocked even if reads enabled.
openapi_reads_enabled: boolWhether read operations (GET) are enabled (default: true)
openapi_allow_writes: boolWhether write operations (POST, PUT, PATCH) are allowed globally
openapi_allowed_writes: HashSet<String>Allowed write operations (operationId or “METHOD /path”)
openapi_blocked_writes: HashSet<String>Blocked write operations
openapi_allow_deletes: boolWhether delete operations (DELETE) are allowed globally
openapi_allowed_deletes: HashSet<String>Allowed delete operations (operationId or “METHOD /path”)
openapi_blocked_paths: HashSet<String>Blocked paths (glob patterns like “/admin/*”)
openapi_internal_blocked_fields: HashSet<String>Fields that are stripped from API responses entirely (no access)
openapi_output_blocked_fields: HashSet<String>Fields that can be used internally but not in script output
openapi_require_output_declaration: boolWhether scripts must declare their return type with @returns
Action tags to override inferred actions for specific operations.
max_depth: u32Maximum query depth
max_field_count: u32Maximum field count per query
max_cost: u32Maximum estimated query cost
allowed_sensitive_categories: HashSet<String>Allowed sensitive data categories
token_ttl_seconds: i64Token time-to-live in seconds
auto_approve_levels: Vec<RiskLevel>Risk levels that can be auto-approved without human confirmation
max_query_length: usizeMaximum query length in characters
max_result_rows: usizeMaximum result rows to return
query_timeout_seconds: u32Query execution timeout in seconds
server_id: Option<String>Server ID for token generation
sdk_operations: HashSet<String>Allowed SDK operation names for SDK-backed Code Mode. When non-empty, Code Mode uses SDK dispatch instead of HTTP. Operations are validated at compile time — unlisted names are rejected.
operations: Vec<OperationEntry>Declared operations for plain-name ID mapping in Cedar entities. Parsed from [[code_mode.operations]] TOML sections. When non-empty, ScriptEntity calledOperations uses IDs from the registry built from these entries. Unregistered paths fall back to METHOD:/path.
Implementations§
Source§impl CodeModeConfig
impl CodeModeConfig
Sourcepub fn from_toml(toml_str: &str) -> Result<Self, Error>
pub fn from_toml(toml_str: &str) -> Result<Self, Error>
Parse CodeModeConfig from a full TOML config string.
Extracts the [code_mode] section (including [[code_mode.operations]])
and ignores all other sections. This is the recommended way for external
servers to build their config from config.toml:
const CONFIG_TOML: &str = include_str!("../../config.toml");
let config = CodeModeConfig::from_toml(CONFIG_TOML)
.expect("Invalid code_mode section in config.toml");If the TOML has no [code_mode] section, returns CodeModeConfig::default().
Sourcepub fn is_sdk_mode(&self) -> bool
pub fn is_sdk_mode(&self) -> bool
Returns true if this config enables SDK-backed Code Mode.
Sourcepub fn should_auto_approve(&self, risk_level: RiskLevel) -> bool
pub fn should_auto_approve(&self, risk_level: RiskLevel) -> bool
Check if a risk level should be auto-approved.
Sourcepub fn to_server_config_entity(&self) -> ServerConfigEntity
pub fn to_server_config_entity(&self) -> ServerConfigEntity
Convert to ServerConfigEntity for policy evaluation.
Sourcepub fn to_openapi_server_entity(&self) -> OpenAPIServerEntity
pub fn to_openapi_server_entity(&self) -> OpenAPIServerEntity
Convert to OpenAPIServerEntity for policy evaluation (OpenAPI Code Mode).
Trait Implementations§
Source§impl Clone for CodeModeConfig
impl Clone for CodeModeConfig
Source§fn clone(&self) -> CodeModeConfig
fn clone(&self) -> CodeModeConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CodeModeConfig
impl Debug for CodeModeConfig
Source§impl Default for CodeModeConfig
impl Default for CodeModeConfig
Source§impl<'de> Deserialize<'de> for CodeModeConfig
impl<'de> Deserialize<'de> for CodeModeConfig
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 CodeModeConfig
impl RefUnwindSafe for CodeModeConfig
impl Send for CodeModeConfig
impl Sync for CodeModeConfig
impl Unpin for CodeModeConfig
impl UnsafeUnpin for CodeModeConfig
impl UnwindSafe for CodeModeConfig
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