| source | https://docs.openclaw.ai/tools |
|---|---|
| created | 2026-03-01 |
| by | nvidia:z-ai/glm5 |
오픈클로 도구
오픈클로(OpenClaw)는 브라우저, 캔버스, 노드, 크론(Cron)을 위한 일급 에이전트 도구를 제공한다. 이 도구들은 기존 openclaw-* 스킬을 대체한다. 도구에는 타입이 지정되어 있고 셸을 실행하지 않으며, 에이전트는 이 도구들에 직접 의존해야 한다. openclaw.json에서 tools.allow / tools.deny를 통해 전역적으로 도구를 허용하거나 거부할 수 있다(거부가 우선한다). 이렇게 하면 허용되지 않은 도구가 모델 제공자에게 전송되는 것을 방지할 수 있다.
{
"tools": { "deny": ["browser"] },
}
참고:
- 대소문자를 구분하지 않고 일치시킨다.
*와일드카드를 지원한다("*"는 모든 도구를 의미).tools.allow가 알려지지 않았거나 로드되지 않은 플러그인 도구 이름만 참조하면, 오픈클로는 경고를 로그에 남기고 허용 목록을 무시한다. 따라서 핵심 도구는 계속 사용할 수 있다.
tools.profile은 tools.allow / tools.deny 이전에 기본 도구 허용 목록을 설정한다. 에이전트별 재정의는 agents.list[].tools.profile에서 가능하다.
프로필:
minimal:session_status만coding:group:fs,group:runtime,group:sessions,group:memory,imagemessaging:group:messaging,sessions_list,sessions_history,sessions_send,session_statusfull: 제한 없음(설정하지 않은 것과 동일)
예시(기본적으로 메시징 전용, 슬랙(Slack) + 디스코드(Discord) 도구도 허용):
{
"tools": {
"profile": "messaging",
"allow": ["slack", "discord"],
},
}
예시(코딩 프로필이지만 exec/process는 어디서든 거부):
{
"tools": {
"profile": "coding",
"deny": ["group:runtime"],
},
}
예시(전역 코딩 프로필, 메시징 전용 지원 에이전트):
{
"tools": { "profile": "coding" },
"agents": {
"list": [
{
"id": "support",
"tools": { "profile": "messaging", "allow": ["slack"] },
},
],
},
}
전역 기본값을 변경하지 않고 특정 제공자(또는 단일 provider/model)에 대해 도구를 추가로 제한하려면 tools.byProvider를 사용한다. 에이전트별 재정의는 agents.list[].tools.byProvider에서 가능하다. 이 설정은 기본 도구 프로필 이후, 허용/거부 목록 이전에 적용된다. 따라서 도구 집합을 좁히는 역할만 한다. 제공자 키는 provider(예: google-antigravity) 또는 provider/model(예: openai/gpt-5.2)을 받는다.
예시(전역 코딩 프로필 유지, 구글 안티그래비티(Google Antigravity)는 최소 도구만):
{
"tools": {
"profile": "coding",
"byProvider": {
"google-antigravity": { "profile": "minimal" },
},
},
}
예시(불안정한 엔드포인트에 대한 제공자/모델별 허용 목록):
{
"tools": {
"allow": ["group:fs", "group:runtime", "sessions_list"],
"byProvider": {
"openai/gpt-5.2": { "allow": ["group:fs", "sessions_list"] },
},
},
}
예시(단일 제공자에 대한 에이전트별 재정의):
{
"agents": {
"list": [
{
"id": "support",
"tools": {
"byProvider": {
"google-antigravity": { "allow": ["message", "sessions_list"] },
},
},
},
],
},
}
도구 정책(전역, 에이전트, 샌드박스)은 여러 도구로 확장되는 group:* 항목을 지원한다. tools.allow / tools.deny에서 사용한다. 사용 가능한 그룹:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: 모든 내장 오픈클로 도구(제공자 플러그인 제외)
예시(파일 도구 + 브라우저만 허용):
{
"tools": {
"allow": ["group:fs", "browser"],
},
}
플러그인은 핵심 세트 외에 추가 도구(및 CLI 명령)를 등록할 수 있다. 설치 및 설정은 플러그인을, 도구 사용 가이드가 프롬프트에 주입되는 방식은 스킬을 참조하라. 일부 플러그인은 도구와 함께 자체 스킬을 제공한다(예: 음성 통화 플러그인).
선택적 플러그인 도구:
- Lobster: 재개 가능한 승인이 있는 타입 지정 워크플로 런타임(게이트웨이 호스트에 Lobster CLI 필요).
- LLM Task: 구조화된 워크플로 출력을 위한 JSON 전용 LLM 단계(선택적 스키마 검증).
- Diffs: 읽기 전용 diff 뷰어 및 PNG 렌더러(변경 전후 텍스트 또는 통합 패치용).
apply_patch
하나 이상의 파일에 구조화된 패치를 적용한다. 여러 청(multi-hunk) 편집에 사용한다.
실험적 기능: tools.exec.applyPatch.enabled로 활성화한다(오픈AI 모델만 해당).
tools.exec.applyPatch.workspaceOnly의 기본값은 true(워크스페이스 내 포함)이다. 의도적으로 apply_patch가 워크스페이스 디렉터리 외부에 쓰거나 삭제하게 하려면 false로 설정하라.
exec
워크스페이스에서 셸 명령을 실행한다.
핵심 매개변수:
command(필수)yieldMs(시간 초과 후 자동 백그라운드 전환, 기본값 10000)background(즉시 백그라운드 전환)timeout(초 단위, 초과 시 프로세스 종료, 기본값 1800)elevated(부울, 승격 모드가 활성화/허용된 경우 호스트에서 실행, 에이전트가 샌드박스된 경우에만 동작 변경)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(host=node인 경우 노드 ID/이름)- 실제 TTY가 필요하다면
pty: true로 설정하라.
참고:
- 백그라운드로 실행되면
sessionId와 함께status: "running"을 반환한다. process를 사용하여 백그라운드 세션을 폴링/로그/쓰기/종료/지울 수 있다.process가 허용되지 않으면exec는 동기적으로 실행되며yieldMs/background를 무시한다.elevated는tools.elevated와agents.list[].tools.elevated재정의(둘 다 허용해야 함)에 의해 제어되며,host=gateway+security=full의 별칭이다.elevated는 에이전트가 샌드박스된 경우에만 동작을 변경한다(그렇지 않으면 아무 작업도 수행하지 않음).host=node는 macOS 동반 앱 또는 헤드리스 노드 호스트(openclaw node run)를 대상으로 할 수 있다.- 게이트웨이/노드 승인 및 허용 목록: Exec 승인.
process
백그라운드 exec 세션을 관리한다.
핵심 작업:
list,poll,log,write,kill,clear,remove
참고:
poll은 완료 시 새로운 출력과 종료 상태를 반환한다.log는 라인 기반offset/limit을 지원한다(offset을 생략하면 마지막 N줄을 가져옴).process는 에이전트별로 범위가 지정된다. 다른 에이전트의 세션은 보이지 않는다.
loop-detection (도구 호출 루프 가드레일)
오픈클로는 최근 도구 호출 기록을 추적하여 반복되고 진전이 없는 루프를 감지하면 차단하거나 경고한다. tools.loopDetection.enabled: true로 활성화한다(기본값은 false).
{
"tools": {
"loopDetection": {
"enabled": true,
"warningThreshold": 10,
"criticalThreshold": 20,
"globalCircuitBreakerThreshold": 30,
"historySize": 30,
"detectors": {
"genericRepeat": true,
"knownPollNoProgress": true,
"pingPong": true,
},
},
},
}
genericRepeat: 동일한 도구와 동일한 매개변수 호출 패턴 반복.knownPollNoProgress: 동일한 출력으로 반복되는 폴링 유사 도구.pingPong: 진전이 없는A/B/A/B교대 패턴.- 에이전트별 재정의:
agents.list[].tools.loopDetection.
web_search
Brave Search API를 사용하여 웹을 검색한다.
핵심 매개변수:
query(필수)count(1–10,tools.web.search.maxResults에서 기본값 가져옴)
참고:
- Brave API 키가 필요하다(권장:
openclaw configure --section web, 또는BRAVE_API_KEY설정). tools.web.search.enabled로 활성화한다.- 응답은 캐시된다(기본 15분).
- 설정은 웹 도구를 참조하라.
web_fetch
URL에서 콘텐츠를 가져와 읽을 수 있는 형식으로 추출한다(HTML → 마크다운/텍스트).
핵심 매개변수:
url(필수)extractMode(markdown|text)maxChars(긴 페이지 자르기)
참고:
tools.web.fetch.enabled로 활성화한다.maxChars는tools.web.fetch.maxCharsCap에 의해 제한된다(기본값 50000).- 응답은 캐시된다(기본 15분).
- JS가 많은 사이트의 경우 브라우저 도구를 사용하는 것이 좋다.
- 설정은 웹 도구를 참조하라.
- 선택적 봇 방지 대체 기능은 Firecrawl을 참조하라.
browser
전용 오픈클로 관리 브라우저를 제어한다.
핵심 작업:
status,start,stop,tabs,open,focus,closesnapshot(aria/ai)screenshot(이미지 블록 +MEDIA:<path>반환)act(UI 작업: 클릭/입력/누르기/호버/드래그/선택/채우기/크기 조절/대기/평가)navigate,console,pdf,upload,dialog
프로필 관리:
profiles— 상태가 있는 모든 브라우저 프로필 나열create-profile— 자동 할당된 포트(또는cdpUrl)로 새 프로필 생성delete-profile— 브라우저 중지, 사용자 데이터 삭제, 설정에서 제거(로컬만)reset-profile— 프로필 포트의 고아 프로세스 종료(로컬만)
공통 매개변수:
profile(선택 사항,browser.defaultProfile기본값)target(sandbox|host|node)node(선택 사항, 특정 노드 ID/이름 선택)
참고:
browser.enabled=true가 필요하다(기본값은true, 비활성화하려면false설정).- 모든 작업은 다중 인스턴스 지원을 위해 선택적
profile매개변수를 받는다. profile을 생략하면browser.defaultProfile을 사용한다(기본값 "chrome").- 프로필 이름: 소문자 영숫자 + 하이픈만 허용(최대 64자).
- 포트 범위: 18800-18899 (최대 약 100개 프로필).
- 원격 프로필은 연결 전용이다(시작/중지/재설정 불가).
- 브라우저 가능한 노드가 연결되어 있으면 도구가 자동으로 라우팅할 수 있다(
target을 고정하지 않은 경우). - Playwright가 설치되어 있으면
snapshot은 기본적으로ai를 사용한다. 접근성 트리를 원하면aria를 사용하라. snapshot은 역할 스냅샷 옵션(interactive,compact,depth,selector)도 지원하며,e12와 같은 참조를 반환한다.act는snapshot의ref가 필요하다(AI 스냅샷의 숫자12또는 역할 스냅샷의e12). 드문 경우 CSS 선택자가 필요하면evaluate를 사용하라.- 기본적으로
act→wait는 피하라. 신뢰할 수 있는 UI 상태를 기다릴 수 없는 예외적인 경우에만 사용하라. upload는 무장 후 자동 클릭을 위해 선택적으로ref를 전달할 수 있다.upload는<input type="file">을 직접 설정하기 위해inputRef(aria ref) 또는element(CSS 선택자)도 지원한다.
canvas
노드 캔버스를 구동한다(제시, 평가, 스냅샷, A2UI).
핵심 작업:
present,hide,navigate,evalsnapshot(이미지 블록 +MEDIA:<path>반환)a2ui_push,a2ui_reset
참고:
- 내부적으로 게이트웨이
node.invoke를 사용한다. node가 제공되지 않으면 도구가 기본값(단일 연결 노드 또는 로컬 mac 노드)을 선택한다.- A2UI는 v0.8 전용이다(
createSurface없음). CLI는 줄 오류와 함께 v0.9 JSONL를 거부한다. - 빠른 테스트:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes
페어링된 노드를 검색하고 대상으로 지정하며, 알림을 보내고 카메라/화면을 캡처한다.
핵심 작업:
status,describepending,approve,reject(페어링)notify(macOSsystem.notify)run(macOSsystem.run)camera_list,camera_snap,camera_clip,screen_recordlocation_get,notifications_list,notifications_actiondevice_status,device_info,device_permissions,device_health
참고:
- 카메라/화면 명령은 노드 앱이 포그라운드에 있어야 작동한다.
- 이미지는 이미지 블록 +
MEDIA:<path>를 반환한다. - 비디오는
FILE:<path>(mp4)를 반환한다. - 위치는 JSON 페이로드(위도/경도/정확도/타임스탬프)를 반환한다.
run매개변수:commandargv 배열, 선택적cwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
예시(run):
{
"action": "run",
"node": "office-mac",
"command": ["echo", "Hello"],
"env": ["FOO=bar"],
"commandTimeoutMs": 12000,
"invokeTimeoutMs": 45000,
"needsScreenRecording": false
}
image
구성된 이미지 모델로 이미지를 분석한다.
핵심 매개변수:
image(필수 경로 또는 URL)prompt(선택 사항, 기본값 "Describe the image.")model(선택적 재정의)maxBytesMb(선택적 크기 제한)
참고:
agents.defaults.imageModel이 구성되어 있거나(기본 또는 대체), 기본 모델 + 구성된 인증에서 암시적 이미지 모델을 유추할 수 있을 때만 사용할 수 있다(최선의 페어링).- 이미지 모델을 직접 사용한다(주 채팅 모델과 독립적).
message
디스코드/구글 챗/슬랙/텔레그램/왓츠앱/시그널/iMessage/MS 팀즈 간에 메시지와 채널 작업을 보낸다.
핵심 작업:
send(텍스트 + 선택적 미디어, MS 팀즈는 적응형 카드를 위한card도 지원)poll(왓츠앱/디스코드/MS 팀즈 투표)react/reactions/read/edit/deletepin/unpin/list-pinspermissionsthread-create/thread-list/thread-replysearchstickermember-info/role-infoemoji-list/emoji-upload/sticker-uploadrole-add/role-removechannel-info/channel-listvoice-statusevent-list/event-createtimeout/kick/ban
참고:
send는 왓츠앱을 게이트웨이를 통해 라우팅하고, 다른 채널은 직접 연결한다.poll은 왓츠앱과 MS 팀즈에 게이트웨이를 사용하고, 디스코드 투표는 직접 연결한다.- 메시지 도구 호출이 활성 채팅 세션에 바인딩되면, 컨텍스트 간 유출을 방지하기 위해 전송이 해당 세션의 대상으로 제한된다.
cron
게이트웨이 크론 작업 및 웨이크업을 관리한다.
핵심 작업:
status,listadd,update,remove,run,runswake(시스템 이벤트 큐에 넣기 + 선택적 즉시 하트비트)
참고:
add는 전체 크론 작업 객체를 예상한다(cron.addRPC와 동일한 스키마).update는{ jobId, patch }를 사용한다(호환성을 위해id도 허용).
gateway
실행 중인 게이트웨이 프로세스를 재시작하거나 업데이트를 적용한다(인플레이스).
핵심 작업:
restart(인증 +SIGUSR1전송하여 프로세스 내 재시작,openclaw gateway인플레이스 재시작)config.get/config.schemaconfig.apply(검증 + 설정 쓰기 + 재시작 + 웨이크)config.patch(부분 업데이트 병합 + 재시작 + 웨이크)update.run(업데이트 실행 + 재시작 + 웨이크)
참고:
delayMs(기본값 2000)를 사용하여 진행 중인 응답을 중단하지 않도록 하라.restart는 기본적으로 활성화되어 있다. 비활성화하려면commands.restart: false로 설정하라.
sessions_list / sessions_history / sessions_send / sessions_spawn / session_status
세션을 나열하고, 기록을 검사하거나, 다른 세션으로 보낸다.
핵심 매개변수:
sessions_list:kinds?,limit?,activeMinutes?,messageLimit?(0 = 없음)sessions_history:sessionKey(또는sessionId),limit?,includeTools?sessions_send:sessionKey(또는sessionId),message,timeoutSeconds?(0 = 실행 후 잊기)sessions_spawn:task,label?,runtime?,agentId?,model?,thinking?,cwd?,runTimeoutSeconds?,thread?,mode?,cleanup?session_status:sessionKey?(기본값 현재,sessionId허용),model?(default는 재정의 지움)
참고:
main은 정식 다이렉트 채팅 키이다. 전역/알 수 없는 것은 숨겨진다.messageLimit > 0이면 세션당 마지막 N개의 메시지를 가져온다(도구 메시지는 필터링됨).- 세션 대상 지정은
tools.sessions.visibility로 제어된다(기본값tree: 현재 세션 + 생성된 하위 에이전트 세션). 여러 사용자가 공유 에이전트를 실행하는 경우, 세션 간 검색을 방지하기 위해tools.sessions.visibility: "self"설정을 고려하라. sessions_send는timeoutSeconds > 0일 때 최종 완료를 기다린다.- 전달/알림은 완료 후 발생하며 최선을 다한다.
status: "ok"는 알림이 전달되었음이 아니라 에이전트 실행이 완료되었음을 확인한다. sessions_spawn은runtime: "subagent" | "acp"를 지원한다(subagent기본값). ACP 런타임 동작은 ACP 에이전트를 참조하라.sessions_spawn은 하위 에이전트 실행을 시작하고 요청자 채팅에 알림 응답을 게시한다.- 일회성 모드(
mode: "run")와 영구 스레드 바인딩 모드(mode: "session"withthread: true)를 지원한다. thread: true이고mode가 생략되면 모드는 기본적으로session이 된다.mode: "session"은thread: true가 필요하다.runTimeoutSeconds가 생략되면, 오픈클로는agents.defaults.subagents.runTimeoutSeconds를 사용한다. 설정되지 않으면 기본값은0(시간 초과 없음)이다.- 디스코드 스레드 바인딩 흐름은
session.threadBindings.*및channels.discord.threadBindings.*에 따라 달라진다. - 응답 형식에는
Status,Result, 간단한 통계가 포함된다. Result는 어시스턴트 완료 텍스트이다. 없으면 최신toolResult가 대체로 사용된다.- 수동 완료 모드 생성은 먼저 직접 전송하고, 일시적 실패 시 큐 대기 후 재시도한다(
status: "ok"는 실행 완료를 의미하며, 알림 전달을 의미하지 않음). sessions_spawn은 비차단이며 즉시status: "accepted"를 반환한다.sessions_send는 핑퐁 응답을 실행한다(중지하려면REPLY_SKIP으로 응답, 최대 턴은session.agentToAgent.maxPingPongTurns, 0–5).- 핑퐁 후 대상 에이전트는 알림 단계를 실행한다. 알림을 억제하려면
ANNOUNCE_SKIP으로 응답하라. - 샌드박스 클램프: 현재 세션이 샌드박스되고
agents.defaults.sandbox.sessionToolsVisibility: "spawned"이면, 오픈클로는tools.sessions.visibility를tree로 고정한다.
agents_list
현재 세션이 sessions_spawn으로 대상으로 지정할 수 있는 에이전트 ID를 나열한다.
참고:
- 결과는 에이전트별 허용 목록(
agents.list[].subagents.allowAgents)으로 제한된다. ["*"]이 구성되면, 도구는 구성된 모든 에이전트를 포함하고allowAny: true로 표시한다.
매개변수 (공통)
게이트웨이 지원 도구(canvas, nodes, cron):
gatewayUrl(기본값ws://127.0.0.1:18789)gatewayToken(인증 활성화 시)timeoutMs
참고: gatewayUrl을 설정할 때는 gatewayToken을 명시적으로 포함하라. 도구는 재정의를 위해 구성이나 환경 자격 증명을 상속하지 않는다. 명시적 자격 증명이 누락되면 오류이다.
브라우저 도구:
profile(선택 사항,browser.defaultProfile기본값)target(sandbox|host|node)node(선택 사항, 특정 노드 ID/이름 고정)
권장 에이전트 흐름
브라우저 자동화:
browser→status/startsnapshot(ai 또는 aria)act(클릭/입력/누르기)- 시각적 확인이 필요하면
screenshot
캔버스 렌더링:
canvas→presenta2ui_push(선택 사항)snapshot
노드 대상 지정:
nodes→status- 선택한 노드에서
describe notify/run/camera_snap/screen_record
안전
- 직접
system.run을 피하라.nodes→run은 사용자의 명시적 동의 하에만 사용하라. - 카메라/화면 캡처에 대한 사용자 동의를 존중하라.
- 미디어 명령을 호출하기 전에
status/describe로 권한을 확인하라.
도구는 두 개의 병렬 채널을 통해 노출된다:
- 시스템 프롬프트 텍스트: 사람이 읽을 수 있는 목록 + 가이드.
- 도구 스키마: 모델 API로 전송되는 구조화된 함수 정의.
즉, 에이전트는 "어떤 도구가 있는지"와 "어떻게 호출하는지"를 모두 볼 수 있다. 도구가 시스템 프롬프트나 스키마에 나타나지 않으면 모델은 그 도구를 호출할 수 없다.
https://docs.openclaw.ai/tools