Skip to main content

SubAgentConfig

Struct SubAgentConfig 

Source
pub struct SubAgentConfig {
    pub enabled: bool,
    pub max_concurrent: usize,
    pub extra_dirs: Vec<PathBuf>,
    pub user_agents_dir: Option<PathBuf>,
    pub default_permission_mode: Option<PermissionMode>,
    pub default_disallowed_tools: Vec<String>,
    pub allow_bypass_permissions: bool,
    pub default_memory_scope: Option<MemoryScope>,
    pub hooks: SubAgentLifecycleHooks,
    pub transcript_dir: Option<PathBuf>,
    pub transcript_enabled: bool,
    pub transcript_max_files: usize,
}

Fields§

§enabled: bool§max_concurrent: usize

Maximum number of sub-agents that can run concurrently.

Must be >= max_parallel + 1 when orchestration is enabled, to avoid starving orchestration tasks while a planning-phase sub-agent is still active.

§extra_dirs: Vec<PathBuf>§user_agents_dir: Option<PathBuf>

User-level agents directory.

Set to an absolute path to override the platform default (~/.config/zeph/agents on Linux/macOS, %APPDATA%/zeph/agents on Windows). Note: tilde (~) expansion is not supported — use an absolute path or omit this field to use the platform default. Set to empty string to disable the user-level directory entirely.

§default_permission_mode: Option<PermissionMode>

Default permission mode applied to sub-agents that do not specify one.

Only takes effect when the sub-agent definition leaves permission_mode at its default value (Default). If the definition sets an explicit mode, this field is ignored. Some(PermissionMode::Default) behaves identically to None — both result in Default mode. Prefer omitting the field over explicitly setting default_permission_mode = "default" in config.

§default_disallowed_tools: Vec<String>

Global denylist applied to all sub-agents in addition to per-agent tools.except.

§allow_bypass_permissions: bool

Allow sub-agents to use bypass_permissions mode.

When false (default), spawning a sub-agent with permission_mode: bypass_permissions is rejected with an error. Set to true only in trusted, controlled environments.

§default_memory_scope: Option<MemoryScope>

Default memory scope applied to sub-agents that do not set memory in their definition.

When set, all agents without an explicit memory field will use this scope. Set to None (omit from config) to disable memory by default.

Note: Setting this affects ALL agents without an explicit memory field. Agents can opt out by setting memory: ~ in their frontmatter (not yet supported — None means “not specified”, which falls back to this default).

§hooks: SubAgentLifecycleHooks

Lifecycle hooks executed when any sub-agent starts or stops.

start hooks run after the agent is spawned (fire-and-forget). stop hooks run after the agent finishes or is cancelled (fire-and-forget).

§transcript_dir: Option<PathBuf>

Directory where transcript JSONL files and meta sidecars are stored.

Defaults to .zeph/subagents relative to the working directory when None.

§transcript_enabled: bool

Enable writing JSONL transcripts for sub-agent sessions.

When false, no transcript files are written and /agent resume is unavailable.

§transcript_max_files: usize

Maximum number of .jsonl transcript files to keep.

When the count exceeds this limit, the oldest files are deleted on each spawn or resume. 0 means unlimited (no cleanup performed).

Trait Implementations§

Source§

impl Clone for SubAgentConfig

Source§

fn clone(&self) -> SubAgentConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SubAgentConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SubAgentConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for SubAgentConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for SubAgentConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,