배경
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 받고 바로 승인 가능.
끝.
'AI-Agent > OpenClaw-Guide' 카테고리의 다른 글
| OpenClaw 모델 목록이 갑자기 줄어드는 현상 대응 - agents.defaults.models의 숨은 동작 (0) | 2026.04.02 |
|---|---|
| OpenClaw 멀티에이전트 환경에서 브라우저 자동화 - 포트 분리, 개별 Chromium 인스턴스 (0) | 2026.04.01 |
| Google AI Pro 구독 플랜으로 추가 과금 없이 OpenClaw에서 Gemini 모델 사용하기 (0) | 2026.03.28 |
| OpenClaw ACP로 Discord에서 Claude Code 실행하기 - 개념부터 iOS 앱 개발 사례까지 (14) | 2026.03.15 |
| OpenClaw 에이전트를 이용해서 공모주 청약 일정을 구글 캘린더에 자동 등록하기 (0) | 2026.03.08 |