pub struct KernelConfig {
pub name: String,
pub vfs_mode: VfsMountMode,
pub cwd: PathBuf,
pub skip_validation: bool,
pub interactive: bool,
pub ignore_config: IgnoreConfig,
pub output_limit: OutputLimitConfig,
pub allow_external_commands: bool,
pub latch_enabled: bool,
pub trash_enabled: bool,
pub nonce_store: Option<NonceStore>,
}Expand description
Configuration for kernel initialization.
Fields§
§name: StringName of this kernel (for identification).
vfs_mode: VfsMountModeVFS mount mode — controls how local filesystem is exposed.
cwd: PathBufInitial working directory (VFS path).
skip_validation: boolWhether to skip pre-execution validation.
When false (default), scripts are validated before execution to catch errors early. Set to true to skip validation for performance or to allow dynamic/external commands.
interactive: boolWhen true, standalone external commands inherit stdio for real-time output.
Set by script runner and REPL for human-visible output. Not set by MCP server (output must be captured for structured responses).
ignore_config: IgnoreConfigIgnore file configuration for file-walking tools.
output_limit: OutputLimitConfigOutput size limit configuration for agent safety.
allow_external_commands: boolWhether external command execution (PATH lookup, exec, spawn) is allowed.
When true (default), commands not found as builtins are resolved via PATH
and executed as child processes. When false, only kaish builtins and
backend-registered tools (MCP) are available.
Security: External commands bypass the VFS sandbox entirely — they see
the real filesystem, network, and environment. Set to false when running
untrusted input.
latch_enabled: boolEnable confirmation latch for dangerous operations (set -o latch).
When enabled, destructive operations like rm require nonce confirmation.
Can also be enabled at runtime with set -o latch or via KAISH_LATCH=1.
trash_enabled: boolEnable trash-on-delete for rm (set -o trash).
When enabled, small files are moved to freedesktop.org Trash instead of
being permanently deleted. Can also be enabled at runtime with set -o trash
or via KAISH_TRASH=1.
nonce_store: Option<NonceStore>Shared nonce store for cross-request confirmation latch.
When Some, the kernel uses this store instead of creating a fresh one.
This allows nonces issued in one MCP execute() call to be validated
in a subsequent call. When None (default), a fresh store is created.
Implementations§
Source§impl KernelConfig
impl KernelConfig
Sourcepub fn named(name: &str) -> Self
pub fn named(name: &str) -> Self
Create a kernel config with the given name (sandboxed by default).
Sourcepub fn repl() -> Self
pub fn repl() -> Self
Create a REPL config with passthrough filesystem access.
Native paths like /home/user/project work directly.
The cwd is set to the actual current working directory.
Sourcepub fn mcp() -> Self
pub fn mcp() -> Self
Create an MCP server config with sandboxed filesystem access.
Local filesystem is accessible at its real path (e.g., /home/user),
but sandboxed to $HOME. Paths outside the sandbox are not accessible
through builtins. External commands still access the real filesystem —
use .with_allow_external_commands(false) to block them.
Sourcepub fn mcp_with_root(root: PathBuf) -> Self
pub fn mcp_with_root(root: PathBuf) -> Self
Create an MCP server config with a custom sandbox root.
Use this to restrict access to a subdirectory like ~/src.
Sourcepub fn isolated() -> Self
pub fn isolated() -> Self
Create a config with no local filesystem (memory only).
Complete isolation: no local filesystem and external commands are disabled. Useful for tests or pure sandboxed execution.
Sourcepub fn with_vfs_mode(self, mode: VfsMountMode) -> Self
pub fn with_vfs_mode(self, mode: VfsMountMode) -> Self
Set the VFS mount mode.
Sourcepub fn with_skip_validation(self, skip: bool) -> Self
pub fn with_skip_validation(self, skip: bool) -> Self
Skip pre-execution validation.
Sourcepub fn with_interactive(self, interactive: bool) -> Self
pub fn with_interactive(self, interactive: bool) -> Self
Enable interactive mode (external commands inherit stdio).
Sourcepub fn with_ignore_config(self, config: IgnoreConfig) -> Self
pub fn with_ignore_config(self, config: IgnoreConfig) -> Self
Set the ignore file configuration.
Sourcepub fn with_output_limit(self, config: OutputLimitConfig) -> Self
pub fn with_output_limit(self, config: OutputLimitConfig) -> Self
Set the output limit configuration.
Sourcepub fn with_allow_external_commands(self, allow: bool) -> Self
pub fn with_allow_external_commands(self, allow: bool) -> Self
Set whether external command execution is allowed.
When false, commands not found as builtins produce “command not found”
instead of searching PATH. The exec and spawn builtins also return
errors. Use this to prevent VFS sandbox bypass via external binaries.
Sourcepub fn with_latch(self, enabled: bool) -> Self
pub fn with_latch(self, enabled: bool) -> Self
Enable or disable confirmation latch at startup.
Sourcepub fn with_trash(self, enabled: bool) -> Self
pub fn with_trash(self, enabled: bool) -> Self
Enable or disable trash-on-delete at startup.
Sourcepub fn with_nonce_store(self, store: NonceStore) -> Self
pub fn with_nonce_store(self, store: NonceStore) -> Self
Use a shared nonce store for cross-request confirmation latch.
Pass a NonceStore that outlives individual kernel instances so nonces
issued in one MCP execute() call can be validated in subsequent calls.
Trait Implementations§
Source§impl Clone for KernelConfig
impl Clone for KernelConfig
Source§fn clone(&self) -> KernelConfig
fn clone(&self) -> KernelConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more