/** * AutonomyEscalationGuard (L21) * * Detects and prevents unauthorized autonomy escalation attempts. * Implements ASI10 from OWASP Agentic Applications 2026. * * Threat Model: * - ASI10: Unauthorized Autonomy Escalation * - Self-modification attempts * - Capability expansion * - Human-in-the-loop bypass * - Sub-agent spawning without approval * * Protection Capabilities: * - Autonomy level tracking * - Capability boundary enforcement * - Self-modification detection * - Sub-agent control * - Escalation pattern detection */ export interface AutonomyEscalationGuardConfig { /** Maximum allowed autonomy level (0-100) */ maxAutonomyLevel?: number; /** Base autonomy level for new sessions */ baseAutonomyLevel?: number; /** Enable self-modification detection */ detectSelfModification?: boolean; /** Enable sub-agent spawning control */ controlSubAgents?: boolean; /** Maximum allowed sub-agents */ maxSubAgents?: number; /** Actions that require autonomy escalation approval */ escalationRequiredActions?: string[]; /** Enable capability boundary enforcement */ enforceCapabilityBoundaries?: boolean; /** Allowed capabilities per autonomy level */ capabilityLevels?: Record; /** Enable human-in-the-loop enforcement */ enforceHITL?: boolean; /** Actions that always require human approval */ alwaysRequireHuman?: string[]; } export interface AutonomyRequest { /** Request identifier */ request_id: string; /** Type of autonomy request */ request_type: "capability_expansion" | "level_increase" | "spawn_agent" | "self_modify" | "bypass_hitl" | "persist_state"; /** Requested capability or action */ requested_capability?: string; /** Requested autonomy level */ requested_level?: number; /** Reason provided for the request */ reason?: string; /** Source of the request (agent, tool, external) */ source: string; /** Timestamp */ timestamp: number; /** Additional metadata */ metadata?: Record; } export interface AgentCapabilities { /** Current capabilities */ capabilities: Set; /** Current autonomy level */ autonomy_level: number; /** Sub-agents spawned */ sub_agents: string[]; /** Pending escalation requests */ pending_requests: AutonomyRequest[]; /** Denied requests history */ denied_requests: AutonomyRequest[]; /** Last capability change timestamp */ last_capability_change: number; /** HITL checkpoint count */ hitl_checkpoints: number; } export interface AutonomyEscalationResult { allowed: boolean; reason: string; violations: string[]; request_id: string; analysis: { current_autonomy_level: number; requested_autonomy_level?: number; capability_violation: boolean; self_modification_detected: boolean; sub_agent_limit_exceeded: boolean; hitl_required: boolean; escalation_patterns_detected: string[]; }; requires_approval: boolean; approval_type?: "human" | "admin" | "system"; recommendations: string[]; } export declare class AutonomyEscalationGuard { private config; private agentStates; private readonly ESCALATION_PATTERNS; private readonly DEFAULT_CAPABILITY_LEVELS; constructor(config?: AutonomyEscalationGuardConfig); /** * Validate an autonomy-related action or request */ validate(action: string, sessionId: string, params?: Record, requestId?: string): AutonomyEscalationResult; /** * Request autonomy escalation */ requestEscalation(sessionId: string, request: Omit): AutonomyEscalationResult; /** * Approve a pending escalation request (called by human/admin) */ approveEscalation(sessionId: string, requestId: string): boolean; /** * Deny a pending escalation request */ denyEscalation(sessionId: string, requestId: string): boolean; /** * Register a sub-agent */ registerSubAgent(sessionId: string, subAgentId: string): boolean; /** * Get current agent capabilities */ getAgentState(sessionId: string): AgentCapabilities | undefined; /** * Set autonomy level directly (admin only) */ setAutonomyLevel(sessionId: string, level: number): void; /** * Reset agent state */ resetSession(sessionId: string): void; private createAgentState; private getCapabilitiesForLevel; private generateRecommendations; }