| 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 명령)를 등록할 수 있다. 설치 및 설정은 플러그인을, 도구 사용 가이드가 프롬프트에 주입되는 방식은 스킬을 참조하라. 일부 플러그인은 도구와 함께 자체 스킬을 제공한다(예: 음성 통화 플러그인).
선택적 플러그인 도구:
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/이름)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)를 대상으로 할 수 있다.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_searchBrave Search API를 사용하여 웹을 검색한다.
핵심 매개변수:
query (필수)count (1–10, tools.web.search.maxResults에서 기본값 가져옴)참고:
openclaw configure --section web, 또는 BRAVE_API_KEY 설정).tools.web.search.enabled로 활성화한다.web_fetchURL에서 콘텐츠를 가져와 읽을 수 있는 형식으로 추출한다(HTML → 마크다운/텍스트).
핵심 매개변수:
url (필수)extractMode (markdown | text)maxChars (긴 페이지 자르기)참고:
tools.web.fetch.enabled로 활성화한다.maxChars는 tools.web.fetch.maxCharsCap에 의해 제한된다(기본값 50000).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").target을 고정하지 않은 경우).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 노드)을 선택한다.createSurface 없음). CLI는 줄 오류와 함께 v0.9 JSONL를 거부한다.openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".nodes페어링된 노드를 검색하고 대상으로 지정하며, 알림을 보내고 카메라/화면을 캡처한다.
핵심 작업:
status, describepending, approve, reject (페어링)notify (macOS system.notify)run (macOS system.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)를 반환한다.run 매개변수: command argv 배열, 선택적 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.add RPC와 동일한 스키마).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" with thread: 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 → statusdescribenotify / run / camera_snap / screen_recordsystem.run을 피하라. nodes → run은 사용자의 명시적 동의 하에만 사용하라.status/describe로 권한을 확인하라.도구는 두 개의 병렬 채널을 통해 노출된다:
즉, 에이전트는 "어떤 도구가 있는지"와 "어떻게 호출하는지"를 모두 볼 수 있다. 도구가 시스템 프롬프트나 스키마에 나타나지 않으면 모델은 그 도구를 호출할 수 없다.
https://docs.openclaw.ai/tools