본문 바로가기
AI-Agent/OpenClaw-Guide

OpenClaw 2026.3.31 업데이트 이후 에이전트가 작업 중 멈추는 현상 대응 - Discord 명령(exec) 승인

by 가리봉맨 2026. 4. 1.
목차

배경

OpenClaw 2026.3.31 업데이트 작업 중에 예상치 못한 메시지가 나왔다.

Exec approval is required, but chat exec approvals are not enabled on Discord.
Approve it from the Web UI or terminal UI, or enable Discord, Slack, or Telegram exec approvals.

Discord 채널에서 에이전트가 exec 도구를 쓰려는데 승인 UI가 설정 안 됐다는 메시지다. 3.31에서 exec 보안이 강화됐다. 이전에는 Discord에서도 exec가 별도 승인 없이 실행됐는데, 이번 업데이트로 승인이 필요한 명령들이 생겼다. 근데 Discord에서는 승인 UI를 명시적으로 설정하지 않으면 아예 막혀버린다 (승인할 방법이 없으니까). 그래서 execApprovals를 활성화하면 Discord DM으로 승인 알림이 와서 그나마 처리할 수 있게 된다. 불편해진 건 맞지만, Web UI나 터미널 열어서 승인하는 것보다는 낫다.

 

설정 방법

config에 'execApprovals'를 추가해야 한다. 주의할 점은 top-level이 아니라 account별로 설정해야 한다는 것이다. 'channels.discord.execApprovals'가 아니라 'channels.discord.accounts.default.execApprovals'다. 터미널에서 아래 명령어를 실행한다.

python3 -c "
import json
with open('/Users/YOUR_USER/.openclaw/openclaw.json') as f:
    c = json.load(f)
c['channels']['discord']['accounts']['default']['execApprovals'] = {
    'enabled': True,
    'approvers': ['YOUR_DISCORD_USER_ID']
}
with open('/Users/YOUR_USER/.openclaw/openclaw.json', 'w') as f:
    json.dump(c, f, indent=2)
print('done')
"
  • 'YOUR_USER': 맥 사용자명
  • 'YOUR_DISCORD_USER_ID': Discord 사용자 ID (숫자). 내 아이디는 Discord → Settings → Advanced에서 Developer Mode 켜면 이름 우클릭으로 확인 가능

그다음 게이트웨이를 재시작한다.

openclaw gateway restart

 

작동 방식

설정 완료 후 에이전트가 Discord에서 exec를 실행하면..

1. 채널에 "Approval required. I sent approval DMs to the approvers" 메시지가 뜬다.

2. 승인자(내 Discord 계정)에게 DM이 온다.

DM에 위 이미지와 같이 Allow Once / Allow Always / Deny 버튼이 있다.

  • Allow Once — 이번 명령만 실행
  • Allow Always — 이 명령 패턴을 앞으로 승인 없이 실행 (allowlist에 추가됨)
  • Deny — 실행 거부

Allow Always로 한 번 허용한 명령은 다음부터 DM 없이 바로 실행된다.

테스트 결과, allowlist는 명령어 이름 단위로 관리된다. 'echo "test"'를 Allow Always하면 'echo "hello"'도 승인 없이 실행된다. 반면 'ls', 'grep' 같은 다른 명령은 별도로 승인해야 한다.

 

겪은 시행착오

처음에 'channels.discord.execApprovals'로 config.patch를 시도했는데 계속 'Unrecognized keys' 에러가 났다. config.patch가 top-level Discord 설정에 바로 패치를 시도했기 때문이다. 실제 정확한 경로는 'channels.discord.accounts.default.execApprovals'다. account별로 설정해야 하는 구조라 위처럼 python3으로 직접 JSON 파일을 편집하는 방법을 썼다.

 

config.patch로도 가능한가

이론상 가능하지만 경로가 깊어서인지 잘 안 됐다. 안전한 방법은 python3으로 JSON을 직접 수정하고, doctor로 검증한 뒤 재시작하는 것이다.

# config 검증
openclaw doctor --non-interactive

# 재시작
openclaw gateway restart

doctor에서 에러가 없으면 적용된 것이다.

 

승인 빈도 조절 - ask 설정

exec 승인이 너무 번거로우면 tools.exec.ask 설정으로 빈도를 조절할 수 있다.

// openclaw.json
{
  "tools": {
    "exec": {
      "ask": "on-miss"
    }
  }
}
  • ask: "on-miss" (기본값) : allow-always 목록에 없는 명령만 승인 요청. Allow Always로 한 번 허용한 명령은 다음부터 승인 없이 실행
  • ask: "off" : 전부 무승인. 승인 절차 없이 모든 명령 바로 실행
  • ask: "always" : 모든 명령마다 승인 요청

승인이 귀찮으면 'ask: "off"'로 바꾸면 3.31 이전처럼 Discord에서도 exec가 바로 실행된다. 보안 vs 편의 트레이드오프이니 상황에 맞게 선택하면 된다.

 

정리

  • Discord exec 승인은 channels.discord.accounts.default.execApprovals에 설정
  • enabled: true + approvers: [Discord User ID]
  • 승인 알림은 DM으로 온다.
  • Allow Always로 명령 패턴을 allowlist에 추가할 수 있다.
  • 승인이 번거로우면 tools.exec.ask: "off" 로 전부 무승인 전환 가능.
  • 외출 중에도 폰으로 DM 받고 바로 승인 가능.

끝.

반응형
사업자 정보 표시
가리봉랩스(Garibong Labs) | 함동기 | 87, Jukjeon-ro | 사업자 등록번호 : 604-05-36402 | TEL : 010-5130-6483 | Mail : hamjoon@gmail.com | 통신판매신고번호 : 2026-용인수지-0037호 | 사이버몰의 이용약관 바로가기