sigoden/aichat · error

No session role

Error message

No session role

What it means

Raised by role_info() when a session is active but the session has no role name set (session.role_name() returns None). The export of a session-derived role is impossible without an assigned role, so the function bails instead of exporting an empty configuration.

Solutions

  1. Set a role on the session before requesting role information
  2. Use the default/global role info instead by exiting the session
  3. Initialize the session with an explicit role
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at src/config/mod.rs:898 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of sigoden/aichat@82976d349a (2026-09-09). Data as JSON: /api/errors/21e45cdb731f09f0. Report an issue: GitHub.

Appendix: source

Thrown at src/config/mod.rs:898

        if self.agent.is_some() {
            bail!("Cannot perform this operation because you are using a agent")
        }
        if let Some(session) = self.session.as_mut() {
            session.guard_empty()?;
            session.set_role(role);
        } else {
            self.role = Some(role);
        }
        Ok(())
    }

    pub fn role_info(&self) -> Result<String> {
        if let Some(session) = &self.session {
            if session.role_name().is_some() {
                let role = session.to_role();
                Ok(role.export())
            } else {
                bail!("No session role")
            }
        } else if let Some(role) = &self.role {
            Ok(role.export())
        } else {
            bail!("No role")
        }
    }

    pub fn exit_role(&mut self) -> Result<()> {
        if let Some(session) = self.session.as_mut() {
            session.guard_empty()?;
            session.clear_role();
        } else if self.role.is_some() {
            self.role = None;
        }
        Ok(())
    }

View on GitHub (pinned to 82976d349a)