메인 콘텐츠로 건너뛰기

Elevated 모드 (/elevated 지시어)

하는 일

  • /elevated on은 gateway host에서 실행되며 exec approval도 유지합니다(/elevated ask와 동일).
  • /elevated full은 gateway host에서 실행되며 동시에 exec를 자동 승인합니다(exec approval 건너뜀).
  • /elevated ask는 gateway host에서 실행되지만 exec approval은 유지합니다(/elevated on과 동일).
  • on/askexec.security=full강제하지 않습니다. 설정된 security/ask 정책이 계속 적용됩니다.
  • agent가 sandboxed된 경우에만 동작을 바꿉니다. 그렇지 않으면 exec는 이미 host에서 실행됩니다.
  • directive 형식: /elevated on|off|ask|full, /elev on|off|ask|full
  • on|off|ask|full만 허용됩니다. 그 외 값은 힌트를 반환하고 상태를 바꾸지 않습니다.

제어하는 것(그리고 제어하지 않는 것)

  • 사용 가능 게이트: tools.elevated가 전역 기준선입니다. agents.list[].tools.elevated는 agent별로 elevated를 추가 제한할 수 있습니다. 둘 다 허용해야 합니다.
  • 세션별 상태: /elevated on|off|ask|full은 현재 session key에 대한 elevated level을 설정합니다.
  • 인라인 directive: 메시지 안의 /elevated on|ask|full은 해당 메시지에만 적용됩니다.
  • 그룹: 그룹 채팅에서는 agent가 mention된 경우에만 elevated directive가 적용됩니다. mention 요구 사항을 우회하는 command-only 메시지는 mention된 것으로 처리됩니다.
  • Host 실행: elevated는 exec를 gateway host로 강제하며, full은 추가로 security=full도 설정합니다.
  • 승인: full은 exec approval을 건너뜁니다. on/ask는 allowlist/ask 규칙이 요구할 때 이를 따릅니다.
  • Unsandboxed agents: 실행 위치에는 영향이 없습니다. 게이팅, 로깅, 상태에만 영향을 줍니다.
  • tool policy는 계속 적용됨: exec가 tool policy에 의해 거부되면 elevated를 사용할 수 없습니다.
  • /exec와는 별개: /exec는 승인된 발신자에 대한 세션별 기본값을 조정하며 elevated가 필요하지 않습니다.

결정 순서

  1. 메시지에 있는 인라인 지시어(해당 메시지에만 적용).
  2. 세션 오버라이드(지시어만 있는 메시지를 보내 설정).
  3. 전역 기본값(구성의 agents.defaults.elevatedDefault).

세션 기본값 설정

  • 공백은 허용되지만, 메시지는 지시어만 포함해야 합니다. 예: /elevated full.
  • 확인 응답이 전송됩니다(Elevated mode set to full... / Elevated mode disabled.).
  • elevated 접근이 비활성화되어 있거나 발신자가 승인된 allowlist에 없으면, directive는 실행 가능한 오류를 응답하고 session 상태를 바꾸지 않습니다.
  • 현재 elevated level을 보려면 인자 없이 /elevated(또는 /elevated:)를 보내세요.

사용 가능 여부 + allowlist

  • 기능 게이트: tools.elevated.enabled(코드가 지원하더라도 config에 따라 기본값이 off일 수 있음)
  • 발신자 allowlist: tools.elevated.allowFrom과 provider별 allowlist(예: discord, whatsapp)
  • 접두사가 없는 allowlist 항목은 발신자 범위 identity 값에만 매칭됩니다(SenderId, SenderE164, From). recipient routing field는 elevated authorization에 절대 사용되지 않습니다.
  • 변경 가능한 발신자 metadata에는 명시적 prefix가 필요합니다.
    • name:<value>SenderName에 매칭
    • username:<value>SenderUsername에 매칭
    • tag:<value>SenderTag에 매칭
    • id:<value>, from:<value>, e164:<value>는 명시적 identity targeting에 사용 가능
  • agent별 gate: agents.list[].tools.elevated.enabled(선택 사항이며 추가 제한만 가능)
  • agent별 allowlist: agents.list[].tools.elevated.allowFrom(선택 사항이며, 설정되면 발신자는 전역 + agent별 allowlist를 모두 만족해야 함)
  • Discord fallback: tools.elevated.allowFrom.discord가 생략되면 channels.discord.allowFrom 목록이 fallback으로 사용됩니다(legacy: channels.discord.dm.allowFrom). 이를 override하려면 tools.elevated.allowFrom.discord를 설정하세요([]도 가능). agent별 allowlist는 이 fallback을 사용하지 않습니다.
  • 모든 gate를 통과해야 하며, 그렇지 않으면 elevated는 사용할 수 없는 것으로 처리됩니다.

로깅 + 상태

  • elevated exec 호출은 info 레벨로 기록됩니다.
  • session 상태에는 elevated mode가 포함됩니다(예: elevated=ask, elevated=full).