CLI commands
سیاست
openclaw policy
openclaw policy توسط Plugin همراه Policy ارائه میشود. این قابلیت یک لایه انطباق سازمانی روی تنظیمات موجود OpenClaw است، نه یک سامانه پیکربندی دوم. الزامات را در policy.jsonc تعریف میکنید؛ OpenClaw فضای کاری فعال را بهعنوان شواهد مشاهده میکند؛ و Policy انحراف را از طریق doctor --lint گزارش میدهد. Policy فراخوانی ابزارها را اعمال نمیکند، رفتار زمان اجرا را هنگام درخواست بازنویسی نمیکند و مخازن اعتبارنامه مختص هر عامل، مانند auth-profiles.json، را گواهی نمیکند.
Policy کانالهای پیکربندیشده، سرورهای MCP، ارائهدهندگان مدل، وضعیت SSRF شبکه، دسترسی ورودی/کانال، در معرضبودن Gateway و وضعیت فرمانهای Node، دسترسی عامل به فضای کاری، وضعیت محیط ایزوله، وضعیت مدیریت داده، وضعیت ارائهدهنده اسرار/نمایه احراز هویت و فراداده ابزارهای تحت حاکمیت (TOOLS.md) را بررسی میکند. زمانی از آن استفاده کنید که یک فضای کاری به گزارهای ماندگار و قابلبررسی مانند «Telegram نباید فعال باشد» یا «ابزارهای تحت حاکمیت باید فراداده ریسک و مالک را اعلام کنند» نیاز دارد. اگر فقط به رفتار محلی، بدون گواهی یا تشخیص انحراف نیاز دارید، پیکربندی عادی کافی است.
شروع سریع
openclaw plugins enable policyحتی زمانی که policy.jsonc وجود ندارد، Plugin فعال باقی میماند تا doctor بتواند بهجای نادیدهگرفتن بیسروصدای بررسیها، نبود این مصنوع را گزارش کند.
policy.jsonc را دستی بنویسید؛ این فایل از تنظیمات فعلی تولید نمیشود. هر بخش سطحبالا یک فضای نام قانون است: هر بررسی فقط زمانی اجرا میشود که یک قانون مشخص زیر آن وجود داشته باشد (بخشها یا کلیدهای پشتیبانینشده بهجای نادیدهگرفتهشدن بیسروصدا، با policy/policy-jsonc-invalid شکست میخورند). نمونهای حداقلی که همه بخشهای پشتیبانیشده را پوشش میدهد:
{ "channels": { "denyRules": [ { "id": "no-telegram", "when": { "provider": "telegram" }, "reason": "Telegram is not approved for this workspace.", }, ], }, "mcp": { "servers": { "allow": ["docs"], "deny": ["untrusted"], }, }, "models": { "providers": { "allow": ["openai", "anthropic"], "deny": ["openrouter"], }, }, "network": { "privateNetwork": { "allow": false, }, }, "ingress": { "session": { "requireDmScope": "per-channel-peer", }, "channels": { "allowDmPolicies": ["pairing", "allowlist", "disabled"], "denyOpenGroups": true, "requireMentionInGroups": true, }, }, "gateway": { "exposure": { "allowNonLoopbackBind": false, "allowTailscaleFunnel": false, }, "auth": { "requireAuth": true, "requireExplicitRateLimit": true, }, "controlUi": { "allowInsecure": false, }, "remote": { "allow": false, }, "http": { "denyEndpoints": ["chatCompletions", "responses"], "requireUrlAllowlists": true, }, "nodes": { "denyCommands": ["system.run"], }, }, "agents": { "workspace": { "allowedAccess": ["none", "ro"], "denyTools": ["exec", "process", "write", "edit", "apply_patch"], }, }, "dataHandling": { "sensitiveLogging": { "requireRedaction": true, }, "telemetry": { "denyContentCapture": true, }, "retention": { "requireSessionMaintenance": true, }, "memory": { "denySessionTranscriptIndexing": true, }, }, "secrets": { "requireManagedProviders": true, "denySources": ["exec"], "allowInsecureProviders": false, }, "auth": { "profiles": { "requireMetadata": ["provider", "mode"], "allowModes": ["api_key", "token"], }, }, "execApprovals": { "requireFile": true, "defaults": { "allowSecurity": ["deny"] }, "agents": { "allowSecurity": ["deny", "allowlist"], "allowAutoAllowSkills": false, "allowlist": { "expected": ["deploy", "status"] }, }, }, "tools": { "requireMetadata": ["risk", "sensitivity", "owner"], "profiles": { "allow": ["messaging", "minimal"], }, "fs": { "requireWorkspaceOnly": true, }, "exec": { "allowSecurity": ["deny", "allowlist"], "requireAsk": ["always"], "allowHosts": ["sandbox"], }, "elevated": { "allow": false, }, "denyTools": ["group:runtime", "group:fs"], },}نکات سراسری که از جدولهای قوانین زیر آشکار نیستند:
- حذف
gateway.bindدر حالی که اتصالهای غیر local loopback را منع میکنید، به این معناست که مقدار پیشفرض زمان اجرا را میپذیرید؛ برای انطباق سختگیرانه،gateway.bind: "loopback"را تنظیم کنید. - برای یک عامل فقطخواندنی،
modeمحیط ایزوله را در پیشفرضها/عامل مربوطه رویallیاnon-mainوworkspaceAccessرا رویnoneیاroتنظیم کنید. نبود حالت محیط ایزوله یا مقدارoff، یک Policy فقطخواندنی را برآورده نمیکند. agents.workspace.denyToolsمقادیرexec،process،write،editوapply_patchرا میپذیرد. گروههای منع ابزار در پیکربندی، یعنیgroup:fs(تغییر فایل) وgroup:runtime(پوسته/فرایند)، وضعیت معادل را برآورده میکنند.- بررسیهای تأیید اجرای فرمان تنها زمانی مصنوع زنده
exec-approvals.jsonرا میخوانند که یک قانونexecApprovalsوجود داشته باشد؛ مصنوع مفقود یا نامعتبر، شواهد مشاهدهناپذیر است، نه یک قبولی مصنوعی. - شواهد اسرار و نمایه احراز هویت فقط وضعیت ارائهدهنده/منبع و فراداده SecretRef را ثبت میکنند و هرگز مقادیر خام را ثبت نمیکنند. Policy مخازن اعتبارنامه مختص هر عامل، مانند
auth-profiles.json، را نمیخواند یا گواهی نمیکند. - شواهد مدیریت داده فقط وضعیت سطح پیکربندی را شامل میشوند (حالت پوشاندن، کلید تغییر ثبت تلهمتری، حالت نگهداری نشست و تنظیم نمایهسازی رونوشت). این شواهد گزارشها، خروجیهای تلهمتری، رونوشتها یا فایلهای حافظه را بررسی نمیکنند و نتیجه پاک ثابت نمیکند که هیچ داده شخصی یا رازی در آنها وجود ندارد.
مرجع قوانین Policy
همه قوانین زیر اختیاری هستند؛ هر بررسی فقط زمانی اجرا میشود که قانون وجود داشته باشد. وضعیت مشاهدهشده، پیکربندی موجود OpenClaw یا فراداده فضای کاری است.
همپوشانیهای محدودهدار
هنگامی که عاملها یا کانالهای مشخص به Policy سختگیرانهتری نسبت به خطمبنای سطحبالا نیاز دارند، از scopes.<scopeName> استفاده کنید. نام محدوده فقط یک برچسب است؛ تطبیق از گزینشگر داخل محدوده استفاده میکند. همپوشانیها افزایشی هستند: قانون سراسری همچنان اجرا میشود و قانون محدودهدار میتواند یافته خاص خود را برای همان شواهد اضافه کند.
| گزینشگر | بخشهای پشتیبانیشده | زمان استفاده |
|---|---|---|
agentIds |
tools, agents.workspace, sandbox, dataHandling.memory, execApprovals |
یک یا چند عامل زمان اجرا به قوانین سختگیرانهتری نیاز دارند. |
channelIds |
ingress.channels |
یک یا چند کانال به قوانین ورودی سختگیرانهتری نیاز دارند. |
اگر یک ورودی agentIds در agents.list[] وجود نداشته باشد، OpenClaw قانون محدودهدار را بهجای نادیدهگرفتن، برای آن شناسه عامل زمان اجرا در برابر وضعیت سراسری/پیشفرض ارثبریشده ارزیابی میکند.
{ "tools": { "exec": { "allowHosts": ["sandbox", "node"], }, }, "sandbox": { "requireMode": ["all", "non-main"], }, "scopes": { "release-workspace": { "agentIds": ["release-agent", "review-agent"], "agents": { "workspace": { "allowedAccess": ["none", "ro"], }, }, }, "release-lockdown": { "agentIds": ["release-agent"], "tools": { "exec": { "allowHosts": ["sandbox"], "allowSecurity": ["deny", "allowlist"], "requireAsk": ["always"], }, "denyTools": ["exec", "process", "write", "edit", "apply_patch"], }, "sandbox": { "requireMode": ["all"], "allowBackends": ["docker"], }, "dataHandling": { "memory": { "denySessionTranscriptIndexing": true, }, }, }, "shell-sandbox": { "agentIds": ["shell-agent"], "sandbox": { "allowBackends": ["openshell"], "containers": { "requireReadOnlyMounts": false, }, }, }, "telegram-ingress": { "channelIds": ["telegram"], "ingress": { "channels": { "allowDmPolicies": ["pairing"], "denyOpenGroups": true, "requireMentionInGroups": true, }, }, }, },}همان عامل میتواند، مانند نمونه بالا، در چند محدوده ظاهر شود؛ بهشرط آنکه هر محدوده فیلد متفاوتی را اداره کند. یک فیلد محدودهدار تکراری برای همان عامل باید به همان اندازه یا محدودکنندهتر باشد؛ ادعای تکراری ضعیفتر رد میشود (فهرستهای مجاز زیرمجموعه، فهرستهای منع ابرمجموعه و مقادیر بولی الزامی ثابت هستند).
قوانین وضعیت کانتینر (sandbox.containers.*) فقط در برابر شواهدی بررسی میشوند که بکاند محیط ایزوله عامل تطبیقیافته میتواند ارائه کند. اگر یک بکاند نتواند قانونی را که برای آن فعال کردهاید مشاهده کند، Policy بهجای اعلام قبولی، policy/sandbox-container-posture-unobservable را گزارش میدهد؛ قوانین کانتینر را به گروههای عاملی محدود کنید که از بکاندی استفاده میکنند که میتواند آنها را ارائه کند.
ingress.session.requireDmScope در سطحبالا سراسری باقی میماند؛ session.dmScope شواهد قابلانتساب به کانال نیست، بنابراین نمیتوان آن را با channelIds محدودهبندی کرد.
هر محدوده موجود در policy.jsonc باید معتبر و قابلاعمال باشد.
کانالها
| فیلد Policy | وضعیت مشاهدهشده | زمان استفاده |
|---|---|---|
channels.denyRules[].when.provider |
ارائهدهنده channels.* و وضعیت فعالبودن |
منع کانالهای پیکربندیشده از ارائهدهندهای مانند telegram. |
channels.denyRules[].reason |
پیام یافته و زمینه راهنمای ترمیم | توضیح دلیل منع ارائهدهنده. |
سرورهای MCP
| فیلد Policy | وضعیت مشاهدهشده | زمان استفاده |
|---|---|---|
mcp.servers.allow |
شناسههای mcp.servers.* |
الزام قرارداشتن همه سرورهای MCP پیکربندیشده در فهرست مجاز. |
mcp.servers.deny |
شناسههای mcp.servers.* |
منع شناسههای مشخص سرور MCP پیکربندیشده. |
ارائهدهندگان مدل
| فیلد Policy | وضعیت مشاهدهشده | زمان استفاده |
|---|---|---|
models.providers.allow |
شناسههای models.providers.* و ارجاعهای مدل انتخابشده |
الزام استفاده ارائهدهندگان پیکربندیشده و ارجاعهای مدل انتخابشده از ارائهدهندگان تأییدشده. |
models.providers.deny |
شناسههای models.providers.* و ارجاعهای مدل انتخابشده |
منع ارائهدهندگان پیکربندیشده و ارجاعهای مدل انتخابشده بر اساس شناسه ارائهدهنده. |
شبکه
| فیلد Policy | وضعیت مشاهدهشده | زمان استفاده |
|---|---|---|
network.privateNetwork.allow |
راههای گریز SSRF شبکه خصوصی | برای الزام غیرفعالماندن دسترسی به شبکه خصوصی، روی false تنظیم کنید. |
دسترسی ورودی و کانال
| فیلد خطمشی | وضعیت مشاهدهشده | مورد استفاده |
|---|---|---|
ingress.session.requireDmScope |
session.dmScope |
الزام به دامنه جداسازی بازبینیشده برای پیامهای مستقیم. |
ingress.channels.allowDmPolicies |
channels.*.dmPolicy و فیلدهای قدیمی خطمشی پیام مستقیم کانال |
فقط خطمشیهای بازبینیشده کانال پیام مستقیم را مجاز کنید. |
ingress.channels.denyOpenGroups |
خطمشی ورودی کانال، حساب و گروه | ورودی گروه باز را برای کانالها و حسابهای پیکربندیشده رد کنید. |
ingress.channels.requireMentionInGroups |
پیکربندی دروازه اشاره در کانال، حساب، گروه، انجمن و سطوح تودرتو | هنگامی که ورودی گروه باز یا مشروط به اشاره است، دروازه اشاره را الزامی کنید. |
Gateway
| فیلد خطمشی | وضعیت مشاهدهشده | مورد استفاده |
|---|---|---|
gateway.exposure.allowNonLoopbackBind |
gateway.bind |
برای الزام اتصال Gateway به local loopback، روی false تنظیم کنید. |
gateway.exposure.allowTailscaleFunnel |
وضعیت سرویس/تونل Gateway در Tailscale | برای رد کردن در معرضگذاری Tailscale Funnel، روی false تنظیم کنید. |
gateway.auth.requireAuth |
gateway.auth.mode |
برای رد کردن احراز هویت غیرفعال Gateway، روی true تنظیم کنید. |
gateway.auth.requireExplicitRateLimit |
gateway.auth.rateLimit |
برای الزام پیکربندی صریح محدودیت نرخ احراز هویت، روی true تنظیم کنید. |
gateway.controlUi.allowInsecure |
گزینههای ناامن احراز هویت/دستگاه/مبدأ رابط کنترل | برای رد کردن گزینههای ناامن در معرضگذاری رابط کنترل، روی false تنظیم کنید. |
gateway.remote.allow |
حالت/پیکربندی Gateway راهدور | برای رد کردن حالت Gateway راهدور، روی false تنظیم کنید. |
gateway.http.denyEndpoints |
نقاط پایانی API HTTP در Gateway | شناسههای نقاط پایانی مانند chatCompletions یا responses را رد کنید. |
gateway.http.requireUrlAllowlists |
ورودیهای واکشی URL در HTTP Gateway | برای الزام فهرستهای مجاز URL در ورودیهای واکشی URL، روی true تنظیم کنید. |
gateway.nodes.denyCommands |
gateway.nodes.denyCommands |
الزام کنید شناسههای دقیق فرمان Node مانند system.run در پیکربندی OpenClaw رد شده باشند. |
gateway.nodes.denyCommands یک قاعده اَبَرمجموعه ردِ دقیق و حساس به حروف بزرگ و کوچک است.
زمانی از آن استفاده کنید که خطمشی باید اثبات کند فرمانهای ممتاز Node بهصراحت
در پیکربندی OpenClaw رد شدهاند. استقراری که عمداً یک فرمان ممتاز
Node را مجاز میکند، باید پس از بازبینی policy.jsonc را بهروزرسانی کند، نه اینکه
صرفاً به gateway.nodes.allowCommands متکی باشد.
فضای کاری عامل
| فیلد خطمشی | وضعیت مشاهدهشده | مورد استفاده |
|---|---|---|
agents.workspace.allowedAccess |
agents.defaults.sandbox.workspaceAccess و agents.list[].sandbox.workspaceAccess |
فقط مقادیر دسترسی فضای کاری محیط ایزوله مانند none یا ro را مجاز کنید. |
agents.workspace.denyTools |
پیکربندی رد ابزار بهصورت سراسری و برای هر عامل | الزام کنید ابزارهای تغییر (exec، process، write، edit، apply_patch) رد شده باشند. |
وضعیت محیط ایزوله
| فیلد خطمشی | وضعیت مشاهدهشده | مورد استفاده |
|---|---|---|
sandbox.requireMode |
agents.defaults.sandbox.mode و حالت هر عامل |
فقط حالتهای بازبینیشده محیط ایزوله مانند all یا non-main را مجاز کنید. |
sandbox.allowBackends |
agents.defaults.sandbox.backend و پشتیبان هر عامل |
فقط پشتیبانهای بازبینیشده محیط ایزوله مانند docker را مجاز کنید. |
sandbox.containers.denyHostNetwork |
حالت شبکه محیط ایزوله/مرورگر مبتنی بر کانتینر | حالت شبکه میزبان را رد کنید. |
sandbox.containers.denyContainerNamespaceJoin |
حالت شبکه محیط ایزوله/مرورگر مبتنی بر کانتینر | پیوستن به فضای نام شبکه کانتینر دیگر را رد کنید. |
sandbox.containers.requireReadOnlyMounts |
حالت سوارسازی محیط ایزوله/مرورگر مبتنی بر کانتینر | سوارسازیها را ملزم به فقطخواندنی بودن کنید. |
sandbox.containers.denyContainerRuntimeSocketMounts |
اهداف سوارسازی محیط ایزوله/مرورگر مبتنی بر کانتینر | سوارسازی سوکت زمان اجرای کانتینر را رد کنید. |
sandbox.containers.denyUnconfinedProfiles |
وضعیت نمایه امنیتی کانتینر | نمایههای امنیتی نامحدود کانتینر را رد کنید. |
sandbox.browser.requireCdpSourceRange |
محدوده مبدأ CDP مرورگر محیط ایزوله | الزام کنید در معرضگذاری CDP مرورگر یک محدوده مبدأ اعلام کند. |
خطمشی، نبود sandbox.mode را بهعنوان مقدار پیشفرض ضمنی off در نظر میگیرد؛ بنابراین
sandbox.requireMode یک محیط ایزوله تازه یا پیکربندینشده را خارج از
فهرست مجازی مانند ["all"] گزارش میکند.
مدیریت داده
| فیلد خطمشی | وضعیت مشاهدهشده | مورد استفاده |
|---|---|---|
dataHandling.sensitiveLogging.requireRedaction |
logging.redactSensitive |
برای رد کردن logging.redactSensitive: "off"، روی true تنظیم کنید. |
dataHandling.telemetry.denyContentCapture |
diagnostics.otel.captureContent |
برای رد کردن ضبط محتوای تلهمتری، روی true تنظیم کنید. |
dataHandling.retention.requireSessionMaintenance |
session.maintenance.mode |
برای الزام حالت مؤثر نگهداری نشست enforce، روی true تنظیم کنید. |
dataHandling.memory.denySessionTranscriptIndexing |
memory.qmd.sessions.enabled و agents.*.memorySearch.experimental.sessionMemory |
برای رد کردن نمایهسازی رونوشت نشست در حافظه، روی true تنظیم کنید. |
اسرار
| فیلد خطمشی | وضعیت مشاهدهشده | مورد استفاده |
|---|---|---|
secrets.requireManagedProviders |
SecretRefهای پیکربندی و اعلانهای secrets.providers.* |
برای الزام ارجاع SecretRefها به ارائهدهندگان اعلامشده، روی true تنظیم کنید. |
secrets.denySources |
منابع ارائهدهندگان اسرار و منابع SecretRef | منابعی مانند exec، file یا نام منبع پیکربندیشده دیگری را رد کنید. |
secrets.allowInsecureProviders |
پرچمهای وضعیت ناامن ارائهدهندگان اسرار | برای رد کردن ارائهدهندگانی که وضعیت ناامن را انتخاب میکنند، روی false تنظیم کنید. |
تأییدهای اجرا
بررسیهای تأیید اجرا، مصنوع زمان اجرای exec-approvals.json را میخوانند:
بهطور پیشفرض ~/.openclaw/exec-approvals.json، یا هنگامی که OPENCLAW_STATE_DIR تنظیم شده است،
$OPENCLAW_STATE_DIR/exec-approvals.json.
قواعد وضعیت زیر execApprovals.defaults.* یا execApprovals.agents.*
به شواهد مصنوع خواندنی نیاز دارند؛ مصنوع مفقود یا نامعتبر بهجای قبولی بر پایه
بهترین تلاش، بهعنوان شواهد مشاهدهناپذیر گزارش میشود. پس از خواندنی شدن، فیلدهای
حذفشده مقادیر پیشفرض زمان اجرا را به ارث میبرند: نبود defaults.security برابر full است و
نبود امنیت عامل نیز آن مقدار پیشفرض را به ارث میبرد. شواهد شامل defaults،
agents.*، agents.*.allowlist[].pattern، argPattern اختیاری، وضعیت مؤثر
autoAllowSkills و منبع ورودی است — و هرگز شامل مسیر سوکت/توکن،
commandText، lastUsedCommand، مسیرهای حلشده یا برچسبهای زمانی نیست.
| فیلد خطمشی | وضعیت مشاهدهشده | مورد استفاده |
|---|---|---|
execApprovals.requireFile |
مسیر فعال زمان اجرای exec-approvals.json |
برای الزام وجود و تجزیهپذیری مصنوع تأییدها، روی true تنظیم کنید. |
execApprovals.defaults.allowSecurity |
defaults.security، با مقدار پیشفرض full |
فقط حالتهای امنیتی پیشفرض تأییدشده برای تأیید را مجاز کنید. |
execApprovals.agents.allowSecurity |
agents.*.security، با بهارثبردن مقادیر پیشفرض |
فقط حالتهای امنیتی مؤثر تأییدشده برای هر عامل را مجاز کنید. |
execApprovals.agents.allowAutoAllowSkills |
defaults.autoAllowSkills و agents.*.autoAllowSkills، با بهارثبردن پیشفرضهای زمان اجرا |
برای الزام فهرستهای مجاز دستی سختگیرانه بدون تأیید ضمنی CLI مهارت، روی false تنظیم کنید. |
execApprovals.agents.allowlist.expected |
تجمیع ورودیهای الگو و argPattern اختیاری در agents.*.allowlist[] |
الزام کنید فهرست مجاز تأییدها با مجموعه الگوهای بازبینیشده مطابقت داشته باشد. |
مثال: مصنوع تأییدها را الزامی کنید، پیشفرضهای سهلگیرانه را رد کنید و فقط وضعیت تأیید اجرای بازبینیشده را برای عاملهای منتخب مجاز کنید.
{ "execApprovals": { "requireFile": true, "defaults": { // Security modes: "deny", "allowlist", or "full". // This default permits only the locked-down deny posture. "allowSecurity": ["deny"], }, }, "scopes": { "restricted-shell": { "agentIds": ["family-agent", "groups-agent"], "execApprovals": { "agents": { // Selected agents may use reviewed allowlist posture, but not "full". "allowSecurity": ["allowlist"], // false means skill CLIs must appear in the reviewed allowlist instead of // being implicitly approved by autoAllowSkills. "allowAutoAllowSkills": false, "allowlist": { "expected": [ // Simple entry: exact reviewed executable pattern with no argPattern. "travel-hub", // Constrained entry: pattern plus reviewed argument regex. { "pattern": "calendar-cli", "argPattern": "^sync\\b" }, "/bin/date", ], }, }, }, }, },}نمایههای احراز هویت
| فیلد سیاست | وضعیت مشاهدهشده | زمان استفاده |
|---|---|---|
auth.profiles.requireMetadata |
فرادادهٔ ارائهدهنده و حالت در auth.profiles.* |
الزام کلیدهای فرادادهای مانند provider و mode در نمایههای احراز هویت پیکربندی. |
auth.profiles.allowModes |
auth.profiles.*.mode |
مجاز دانستن فقط حالتهای پشتیبانیشدهٔ نمایهٔ احراز هویت، مانند api_key، aws-sdk، oauth یا token. |
فرادادهٔ ابزار
| فیلد سیاست | وضعیت مشاهدهشده | زمان استفاده |
|---|---|---|
tools.requireMetadata |
اعلانهای تحت حاکمیت TOOLS.md |
الزام ابزارهای تحت حاکمیت به اعلام کلیدهای فرادادهای مانند risk، sensitivity یا owner. |
وضعیت ابزار
| فیلد سیاست | وضعیت مشاهدهشده | زمان استفاده |
|---|---|---|
tools.profiles.allow |
tools.profile و agents.list[].tools.profile |
مجاز دانستن فقط شناسههای نمایهٔ ابزار، مانند minimal، messaging یا coding. |
tools.fs.requireWorkspaceOnly |
tools.fs.workspaceOnly و بازنویسیهای tools.fs هر عامل |
تنظیم روی true برای الزام وضعیت دسترسی ابزار فایلسیستم به فضای کاری فقط. |
tools.exec.allowSecurity |
tools.exec.security و امنیت اجرای هر عامل |
مجاز دانستن فقط حالتهای امنیت اجرا، مانند deny یا allowlist. |
tools.exec.requireAsk |
tools.exec.ask و حالت درخواست اجرای هر عامل |
الزام وضعیت تأیید، مانند always. |
tools.exec.allowHosts |
tools.exec.host و مسیریابی میزبان اجرای هر عامل |
مجاز دانستن فقط حالتهای مسیریابی میزبان اجرا، مانند sandbox. |
tools.elevated.allow |
tools.elevated.enabled و وضعیت ارتقایافتهٔ هر عامل |
تنظیم روی false برای الزام غیرفعال ماندن حالت ابزار ارتقایافته. |
tools.alsoAllow.expected |
tools.alsoAllow و tools.alsoAllow هر عامل |
الزام ورودیهای دقیق alsoAllow و گزارش مجوزهای افزودهٔ ابزار که وجود ندارند یا غیرمنتظرهاند. |
tools.denyTools |
tools.deny و agents.list[].tools.deny |
الزام فهرستهای منع ابزار پیکربندیشده به شاملکردن شناسهها یا گروههای ابزار، مانند group:runtime و group:fs. |
اجرای بررسیها
هنگام نگارش، فقط بررسیهای سیاست را اجرا کنید:
openclaw policy checkopenclaw policy check --jsonopenclaw policy check --severity-min errorpolicy check فقط مجموعهٔ بررسیهای سیاست را اجرا میکند و شواهد، یافتهها
و هشهای گواهی را خروجی میدهد. هنگامی که Plugin سیاست فعال باشد، همین یافتهها در
openclaw doctor --lint نیز نمایش داده میشوند.
یک فایل سیاست اپراتور را با یک خط مبنای تدوینشده مقایسه کنید:
openclaw policy compare --baseline official.policy.jsoncopenclaw policy compare --baseline official.policy.jsonc --policy policy.jsonc --jsonpolicy compare نحو فایل سیاست را با نحو فایل سیاست مقایسه میکند؛ این فرمان
وضعیت زمان اجرا، شواهد، اعتبارنامهها یا اسرار را بررسی نمیکند. این فرمان از همان
فرادادهٔ قواعدی استفاده میکند که بر همپوشانیهای محدودهدار حاکم است: فهرستهای مجاز باید
برابر یا محدودتر باقی بمانند، فهرستهای منع باید برابر یا گستردهتر باقی بمانند، مقادیر بولی
الزامی باید مقدار خود را حفظ کنند، رشتههای مرتبشده فقط میتوانند به سمت انتهای سختگیرانهتر
ترتیب پیکربندیشده حرکت کنند و فهرستهای دقیق باید مطابقت داشته باشند. خط مبنا میتواند یک
سیاست تدوینشده توسط سازمان باشد؛ سیاست بررسیشده میتواند مقادیر سختگیرانهتر یا
قواعد بیشتری اضافه کند. یک قاعدهٔ سطح بالای بررسیشده میتواند قاعدهٔ محدودهدار خط مبنا را
در صورتی برآورده کند که به همان اندازه یا بیشتر محدودکننده باشد. لازم نیست نام محدودهها میان
فایلها یکسان باشد؛ مقایسه بر اساس انتخابگر (agentIds/channelIds) و فیلد کلیدگذاری میشود.
مقایسهٔ پاک (--json):
{ "ok": true, "baselinePath": "official.policy.jsonc", "policyPath": "policy.jsonc", "rulesChecked": 3, "findings": []}خروجی پاک policy check --json شامل هشهای پایداری است که اپراتور یا
ناظر میتواند ثبت کند:
{ "ok": true, "attestation": { "policy": { "path": "policy.jsonc", "hash": "sha256:..." }, "workspace": { "scope": "policy", "hash": "sha256:..." }, "findingsHash": "sha256:...", "attestationHash": "sha256:..." }, "checksRun": 5, "checksSkipped": 0, "findings": []}پیکربندی سیاست
پیکربندی سیاست در plugins.entries.policy.config قرار دارد.
{ "plugins": { "entries": { "policy": { "enabled": true, "config": { "enabled": true, "path": "policy.jsonc", "workspaceRepairs": false, "expectedHash": "sha256:...", "expectedAttestationHash": "sha256:...", }, }, }, },}| تنظیم | هدف |
|---|---|
enabled |
فعالکردن بررسیهای سیاست حتی پیش از وجود policy.jsonc. |
workspaceRepairs |
اجازهدادن به doctor --fix برای ویرایش تنظیمات فضای کاری تحت مدیریت سیاست. |
expectedHash |
قفل هش اختیاری برای مصنوع سیاست تأییدشده. |
expectedAttestationHash |
قفل هش اختیاری برای آخرین بررسی پاک و پذیرفتهشدهٔ سیاست. |
path |
مکان مصنوع سیاست نسبت به فضای کاری. |
برای غیرفعالکردن بررسیهای سیاست در یک فضای کاری، در حالی که Plugin
نصبشده باقی میماند، plugins.entries.policy.config.enabled را روی false تنظیم کنید.
پذیرش وضعیت سیاست
نمونهٔ خروجی JSON:
{ "ok": true, "attestation": { "checkedAt": "2026-05-10T20:00:00.000Z", "policy": { "path": "policy.jsonc", "hash": "sha256:..." }, "workspace": { "scope": "policy", "hash": "sha256:..." }, "findingsHash": "sha256:...", "attestationHash": "sha256:..." }, "evidence": { "channels": [ { "id": "telegram", "provider": "telegram", "source": "oc://openclaw.config/channels/telegram", "enabled": false } ], "mcpServers": [ { "id": "docs", "transport": "stdio", "source": "oc://openclaw.config/mcp/servers/docs", "command": "npx" } ], "modelProviders": [ { "id": "openai", "source": "oc://openclaw.config/models/providers/openai" } ], "modelRefs": [ { "ref": "openai/gpt-5.6-sol", "provider": "openai", "model": "gpt-5.6-sol", "source": "oc://openclaw.config/agents/defaults/model" } ], "network": [ { "id": "browser-private-network", "source": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork", "value": false } ], "gatewayExposure": [ { "id": "gateway-bind", "kind": "bind", "source": "oc://openclaw.config/gateway/bind", "value": "loopback", "nonLoopback": false, "explicit": true } ], "agentWorkspace": [ { "id": "agents-defaults-workspace-access", "kind": "workspaceAccess", "source": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess", "scope": "defaults", "value": "ro", "sandboxMode": "all", "sandboxModeSource": "oc://openclaw.config/agents/defaults/sandbox/mode", "sandboxEnabled": true, "explicit": true }, { "id": "agents-defaults-tool-exec", "kind": "toolDeny", "source": "oc://openclaw.config/tools/deny", "scope": "defaults", "tool": "exec", "denied": true, "explicit": true } ], "secrets": [ { "id": "vault", "kind": "provider", "source": "oc://openclaw.config/secrets/providers/vault", "providerSource": "env" }, { "id": "oc://openclaw.config/models/providers/openai/apiKey", "kind": "input", "source": "oc://openclaw.config/models/providers/openai/apiKey", "provenance": "secretRef", "refSource": "env", "refProvider": "vault" } ], "authProfiles": [ { "id": "github", "source": "oc://openclaw.config/auth/profiles/github", "validMetadata": true, "provider": "github", "mode": "token" } ], "tools": [ { "id": "deploy", "source": "oc://TOOLS.md/tools/deploy", "line": 12, "risk": "critical", "sensitivity": "restricted", "capabilities": ["IRREVERSIBLE_EXTERNAL"] } ] }, "checksRun": 30, "checksSkipped": 0, "findings": []}attestation.policy.hash مصنوع قاعدهٔ تدوینشده را مشخص میکند. evidence
وضعیت مشاهدهشدهٔ OpenClaw را که بررسیها از آن استفاده کردهاند ثبت میکند و
workspace.hash بار شواهد را مشخص میکند. findingsHash مجموعهٔ دقیق یافتهها را
مشخص میکند. checkedAt زمان اجرای بررسی را ثبت میکند.
attestationHash ادعای پایدار را مشخص میکند (هش سیاست، هش شواهد،
هش یافتهها و وضعیت پاک/ناپاک) و عمداً checkedAt را مستثنا میکند؛
بنابراین یک وضعیت سیاست یکسان همیشه همان هش گواهی را تولید میکند. این
چهار مقدار در کنار هم چندتایی ممیزی یک بررسی سیاست را تشکیل میدهند.
اگر یک Gateway یا ناظر از سیاست برای مسدودکردن، تأییدکردن یا حاشیهنویسی یک
کنش زمان اجرا استفاده کند، باید هش گواهی آخرین بررسی پاک را ثبت کند.
checkedAt برای گزارشهای ممیزی در خروجی JSON باقی میماند، اما بخشی از
هش پایدار نیست.
چرخهٔ عمر پذیرش وضعیت سیاست:
policy.jsoncرا تدوین یا بازبینی کنید.openclaw policy check --jsonرا اجرا کنید.- اگر پاک بود،
attestation.policy.hashرا بهعنوانexpectedHashثبت کنید. attestation.attestationHashرا بهعنوانexpectedAttestationHashثبت کنید.openclaw doctor --lintرا دوباره در CI یا دروازههای انتشار اجرا کنید.
اگر قواعد سیاست عمداً تغییر میکنند، هر دو هش پذیرفتهشده را بر اساس یک
بررسی پاک بهروزرسانی کنید. اگر فقط تنظیمات فضای کاری تغییر میکنند (و سیاست ثابت میماند)،
معمولاً فقط expectedAttestationHash تغییر میکند.
فعالسازی یا ارتقای قواعد agents.workspace، شواهد agentWorkspace را
به هش فضای کاری و هش گواهی اضافه میکند؛ پس از فعالسازی، شواهد جدید را بررسی کنید و
هشهای گواهی پذیرفتهشده را نوسازی کنید. فعالسازی یا ارتقای قواعد وضعیت ابزار نیز
به همین روش شواهد toolPosture را اضافه میکند.
openclaw policy watch بررسی را دوباره اجرا میکند و زمانی گزارش میدهد که شواهد فعلی دیگر
با expectedAttestationHash مطابقت ندارند:
openclaw policy watch --jsonدر CI یا اسکریپتهایی که به یک ارزیابی واحد از انحراف نیاز دارند، از --once استفاده کنید. بدون
--once، بهطور پیشفرض هر دو ثانیه یکبار بررسی میکند؛ برای تغییر
فاصله زمانی از --interval-ms استفاده کنید.
یافتهها
| شناسه بررسی | یافته |
|---|---|
policy/policy-jsonc-missing |
سیاست فعال است، اما policy.jsonc وجود ندارد. |
policy/policy-jsonc-invalid |
سیاست قابل تجزیه نیست یا شامل ورودیهای قاعده با ساختار نامعتبر است. |
policy/policy-hash-mismatch |
سیاست با expectedHash پیکربندیشده مطابقت ندارد. |
policy/attestation-hash-mismatch |
شواهد فعلی سیاست دیگر با گواهی پذیرفتهشده مطابقت ندارند. |
policy/policy-conformance-invalid |
فایل سیاست مبنا یا بررسیشده دارای نحو مقایسه نامعتبر است. |
policy/policy-conformance-missing |
فایل سیاست بررسیشده، قاعدهای الزامی از فایل سیاست مبنا را ندارد. |
policy/policy-conformance-weaker |
مقداری در فایل سیاست بررسیشده از مقدار فایل سیاست مبنا ضعیفتر است. |
policy/channels-denied-provider |
یک کانال فعال با قاعده منع کانال مطابقت دارد. |
policy/mcp-denied-server |
یک سرور MCP پیکربندیشده توسط سیاست منع شده است. |
policy/mcp-unapproved-server |
یک سرور MCP پیکربندیشده خارج از فهرست مجاز است. |
policy/models-denied-provider |
یک ارائهدهنده مدل یا ارجاع مدل پیکربندیشده از ارائهدهندهای منعشده استفاده میکند. |
policy/models-unapproved-provider |
یک ارائهدهنده مدل یا ارجاع مدل پیکربندیشده خارج از فهرست مجاز است. |
policy/network-private-access-enabled |
یک راه گریز SSRF برای شبکه خصوصی، در حالی فعال است که سیاست آن را منع میکند. |
policy/ingress-dm-policy-unapproved |
سیاست پیام مستقیم یک کانال خارج از فهرست مجاز سیاست است. |
policy/ingress-dm-scope-unapproved |
session.dmScope با دامنه جداسازی پیام مستقیم موردنیاز سیاست مطابقت ندارد. |
policy/ingress-open-groups-denied |
سیاست گروه یک کانال open است، در حالی که سیاست ورودی گروه باز را منع میکند. |
policy/ingress-group-mention-required |
یک ورودی کانال یا گروه، در حالی دروازههای اشاره را غیرفعال میکند که سیاست آنها را الزامی میداند. |
policy/gateway-non-loopback-bind |
وضعیت اتصال Gateway، در حالی امکان دسترسی غیرمحلی را میدهد که سیاست آن را منع میکند. |
policy/gateway-auth-disabled |
احراز هویت Gateway، در حالی غیرفعال است که سیاست آن را الزامی میداند. |
policy/gateway-rate-limit-missing |
وضعیت محدودیت نرخ احراز هویت Gateway، در حالی صریح نیست که سیاست آن را الزامی میداند. |
policy/gateway-control-ui-insecure |
گزینههای دسترسی ناامن رابط کنترل Gateway فعال هستند. |
policy/gateway-tailscale-funnel |
دسترسی Funnel متعلق به Gateway Tailscale، در حالی فعال است که سیاست آن را منع میکند. |
policy/gateway-remote-enabled |
حالت راه دور Gateway، در حالی فعال است که سیاست آن را منع میکند. |
policy/gateway-http-endpoint-enabled |
یک نقطه پایانی API مبتنی بر HTTP در Gateway، با وجود منع سیاست فعال است. |
policy/gateway-http-url-fetch-unrestricted |
ورودی واکشی URL از طریق HTTP در Gateway، فهرست مجاز URL الزامی را ندارد. |
policy/gateway-node-command-denied |
یک فرمان Node که سیاست آن را منع کرده، در پیکربندی OpenClaw منع نشده است. |
policy/agents-workspace-access-denied |
حالت محیط ایزوله عامل یا دسترسی فضای کاری خارج از فهرست مجاز سیاست است. |
policy/agents-tool-not-denied |
پیکربندی یک عامل یا پیکربندی پیشفرض، ابزاری را که سیاست منع آن را الزامی میداند منع نمیکند. |
policy/tools-profile-unapproved |
پروفایل ابزار سراسری یا مختص عاملِ پیکربندیشده خارج از فهرست مجاز است. |
policy/tools-fs-workspace-only-required |
ابزارهای سامانه فایل با وضعیت مسیر محدود به فضای کاری پیکربندی نشدهاند. |
policy/tools-exec-security-unapproved |
حالت امنیت اجرای فرمان خارج از فهرست مجاز سیاست است. |
policy/tools-exec-ask-unapproved |
حالت درخواست تأیید اجرای فرمان خارج از فهرست مجاز سیاست است. |
policy/tools-exec-host-unapproved |
مسیریابی میزبان اجرای فرمان خارج از فهرست مجاز سیاست است. |
policy/tools-elevated-enabled |
حالت ابزار دارای دسترسی ارتقایافته، در حالی فعال است که سیاست آن را منع میکند. |
policy/tools-also-allow-missing |
فهرست alsoAllow پیکربندیشده فاقد ورودی الزامی سیاست است. |
policy/tools-also-allow-unexpected |
فهرست alsoAllow پیکربندیشده شامل ورودیای است که سیاست انتظار آن را ندارد. |
policy/tools-required-deny-missing |
فهرست منع ابزار سراسری یا مختص عامل، ابزار منعشده الزامی را در بر نمیگیرد. |
policy/sandbox-mode-unapproved |
حالت محیط ایزوله خارج از فهرست مجاز سیاست است. |
policy/sandbox-backend-unapproved |
پشتیبان محیط ایزوله خارج از فهرست مجاز سیاست است. |
policy/sandbox-container-posture-unobservable |
یک قاعده وضعیت کانتینر برای پشتیبانی فعال است که نمیتواند آن را مشاهده کند. |
policy/sandbox-container-host-network-denied |
یک محیط ایزوله یا مرورگر مبتنی بر کانتینر از حالت شبکه میزبان استفاده میکند. |
policy/sandbox-container-namespace-join-denied |
یک محیط ایزوله یا مرورگر مبتنی بر کانتینر به فضای نام کانتینر دیگری میپیوندد. |
policy/sandbox-container-mount-mode-required |
اتصال یک محیط ایزوله یا مرورگر مبتنی بر کانتینر فقطخواندنی نیست. |
policy/sandbox-container-runtime-socket-mount |
اتصال یک محیط ایزوله یا مرورگر مبتنی بر کانتینر، سوکت زمان اجرای کانتینر را در معرض دسترسی قرار میدهد. |
policy/sandbox-container-unconfined-profile |
پروفایل محیط ایزوله کانتینر، در حالی نامحدود است که سیاست آن را منع میکند. |
policy/sandbox-browser-cdp-source-range-missing |
محدوده مبدأ CDP مرورگر محیط ایزوله، در حالی وجود ندارد که سیاست آن را الزامی میداند. |
policy/data-handling-redaction-disabled |
حذف اطلاعات حساس از گزارشها، در حالی غیرفعال است که سیاست آن را الزامی میداند. |
policy/data-handling-telemetry-content-capture |
ثبت محتوای تلهمتری، در حالی فعال است که سیاست آن را منع میکند. |
policy/data-handling-session-retention-not-enforced |
نگهداری دورهای نشستها، در حالی اعمال نمیشود که سیاست آن را الزامی میداند. |
policy/data-handling-session-transcript-memory-enabled |
نمایهسازی حافظه رونوشت نشست، در حالی فعال است که سیاست آن را منع میکند. |
policy/secrets-unmanaged-provider |
یک SecretRef در پیکربندی به ارائهدهندهای ارجاع میدهد که در secrets.providers تعریف نشده است. |
policy/secrets-denied-provider-source |
یک ارائهدهنده راز یا SecretRef در پیکربندی از منبعی استفاده میکند که سیاست آن را منع کرده است. |
policy/secrets-insecure-provider |
یک ارائهدهنده راز، در حالی وضعیت ناامن را میپذیرد که سیاست آن را منع میکند. |
policy/auth-profile-invalid-metadata |
پروفایل احراز هویت پیکربندیشده فاقد فراداده معتبر ارائهدهنده یا حالت است. |
policy/auth-profile-unapproved-mode |
حالت پروفایل احراز هویت پیکربندیشده خارج از فهرست مجاز سیاست است. |
policy/exec-approvals-missing |
سیاست وجود exec-approvals.json را الزامی میداند، اما این مصنوع وجود ندارد. |
policy/exec-approvals-invalid |
مصنوع تأییدهای اجرای فرمانِ پیکربندیشده قابل تجزیه نیست. |
policy/exec-approvals-default-security-unapproved |
پیشفرضهای تأیید اجرای فرمان از حالت امنیتی خارج از فهرست مجاز سیاست استفاده میکنند. |
policy/exec-approvals-agent-security-unapproved |
حالت امنیتی مؤثر تأیید اجرای فرمان برای یک عامل خارج از فهرست مجاز است. |
policy/exec-approvals-auto-allow-skills-enabled |
یک عامل تأیید اجرای فرمان، در حالی CLIهای Skills را بهطور ضمنی و خودکار مجاز میکند که سیاست آن را منع میکند. |
policy/exec-approvals-allowlist-missing |
فهرست مجاز تأییدها فاقد الگویی است که سیاست آن را الزامی میداند. |
policy/exec-approvals-allowlist-unexpected |
فهرست مجاز تأییدها شامل الگویی است که سیاست انتظار آن را ندارد. |
policy/tools-missing-risk-level |
اعلان یک ابزار تحت حاکمیت فاقد فراداده ریسک است. |
policy/tools-unknown-risk-level |
اعلان یک ابزار تحت حاکمیت از مقدار ریسک ناشناختهای استفاده میکند. |
policy/tools-missing-sensitivity-token |
اعلان یک ابزار تحت حاکمیت فاقد فراداده حساسیت است. |
policy/tools-missing-owner |
اعلان یک ابزار تحت حاکمیت فاقد فراداده مالک است. |
policy/tools-unknown-sensitivity-token |
اعلان یک ابزار تحت حاکمیت از مقدار حساسیت ناشناختهای استفاده میکند. |
یک یافته میتواند هم شامل target (مورد مشاهدهشده در فضای کاری که
مطابقت ندارد) و هم شامل requirement (قاعده تدوینشدهای که باعث ایجاد یافته شده است)
باشد. در حال حاضر هر دو رشته نشانی oc:// هستند، اما نام فیلدها نقش سیاستی را
توصیف میکنند، نه قالب نشانی را.
نمونه یافتهها:
{ "checkId": "policy/channels-denied-provider", "severity": "error", "message": "Channel 'telegram' uses denied provider 'telegram'.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/channels/telegram", "target": "oc://openclaw.config/channels/telegram", "requirement": "oc://policy.jsonc/channels/denyRules/#0", "fixHint": "Telegram is not approved for this workspace."}{ "checkId": "policy/tools-missing-risk-level", "severity": "error", "message": "TOOLS.md tool 'deploy' has no explicit risk classification.", "source": "policy", "path": "TOOLS.md", "line": 12, "ocPath": "oc://TOOLS.md/tools/deploy", "target": "oc://TOOLS.md/tools/deploy", "requirement": "oc://policy.jsonc/tools/requireMetadata"}{ "checkId": "policy/mcp-unapproved-server", "severity": "error", "message": "MCP server 'remote' is not in the policy allowlist.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/mcp/servers/remote", "target": "oc://openclaw.config/mcp/servers/remote", "requirement": "oc://policy.jsonc/mcp/servers/allow"}{ "checkId": "policy/models-unapproved-provider", "severity": "error", "message": "Model ref 'anthropic/claude-sonnet-4.7' uses unapproved provider 'anthropic'.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/agents/defaults/model/fallbacks/#0", "target": "oc://openclaw.config/agents/defaults/model/fallbacks/#0", "requirement": "oc://policy.jsonc/models/providers/allow"}{ "checkId": "policy/network-private-access-enabled", "severity": "error", "message": "Network setting 'browser-private-network' allows private-network access.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork", "target": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork", "requirement": "oc://policy.jsonc/network/privateNetwork/allow"}{ "checkId": "policy/gateway-non-loopback-bind", "severity": "error", "message": "Gateway bind setting 'gateway-bind' permits non-loopback exposure.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/gateway/bind", "target": "oc://openclaw.config/gateway/bind", "requirement": "oc://policy.jsonc/gateway/exposure/allowNonLoopbackBind"}{ "checkId": "policy/gateway-node-command-denied", "severity": "error", "message": "Gateway node command 'system.run' is denied by policy but not denied by OpenClaw config.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/gateway/nodes/denyCommands", "target": "oc://openclaw.config/gateway/nodes/denyCommands", "requirement": "oc://policy.jsonc/gateway/nodes/denyCommands", "fixHint": "Add 'system.run' to gateway.nodes.denyCommands or update policy after review."}{ "checkId": "policy/agents-workspace-access-denied", "severity": "error", "message": "agents.defaults sandbox workspaceAccess 'rw' is not allowed by policy.", "source": "policy", "path": "openclaw config", "ocPath": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess", "target": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess", "requirement": "oc://policy.jsonc/agents/workspace/allowedAccess"}ترمیم
doctor --lint و policy check فقط خواندنی هستند.
doctor --fix تنها زمانی تنظیمات فضای کاری تحت مدیریت خطمشی را ویرایش میکند که
workspaceRepairs بهصراحت فعال شده باشد؛ در غیر این صورت، بررسیها مواردی را که
ترمیم میکردند گزارش میکنند و تنظیمات را بدون تغییر باقی میگذارند.
در این نسخه، ترمیم میتواند کانالهای منعشده توسط channels.denyRules را غیرفعال
کند و ترمیمهای محدودسازی خودکار فهرستشده در زیر را اعمال کند. workspaceRepairs
را فقط پس از بازبینی فایل خطمشی فعال کنید، زیرا یک قاعده معتبر میتواند پیکربندی
فضای کاری را تغییر دهد:
- وقتی یک خطمشی سراسری ابزارهای دارای سطح دسترسی بالاتر را ممنوع میکند، مقدار
tools.elevated.enabled=falseرا تنظیم کند - وقتی خطمشی الزام میکند آن ابزارها منع شوند، شناسههای ابزارِ الزامیِ منعشده و مفقود را به
tools.denyیاagents.list[].tools.denyاضافه کند - کلیدهای ناامن
gateway.controlUi.*را رویfalseتنظیم کند - وقتی خطمشی حالت Gateway راهدور را منع میکند،
gateway.mode=localرا تنظیم کند - وقتی خطمشی نقاط پایانی API HTTP مربوط به Gateway را منع میکند، مسیرهای گزارششده
gateway.http.endpoints.*.enabledرا رویfalseتنظیم کند - وقتی خطمشی ورود باز گروهی را منع میکند، مسیرهای گزارششده
groupPolicyبرای ورودی کانال را رویallowlistتنظیم کند - وقتی خطمشی اشاره در گروه را الزامی میکند، مسیرهای گزارششده
requireMentionبرای ورودی کانال را رویtrueتنظیم کند - وقتی خطمشی حذف اطلاعات حساس از گزارشها را الزامی میکند،
logging.redactSensitive=toolsرا تنظیم کند - وقتی خطمشی ضبط محتوای تلهمتری را منع میکند،
diagnostics.otel.captureContent=falseیا برای تنظیمات ضبط تلهمتری با ساختار شیء،diagnostics.otel.captureContent.enabled=falseرا تنظیم کند
ترمیم ابزارهای دارای سطح دسترسی بالاتر با دامنه محدود، فقط شناسایی میشود. ترمیمهای مدیریت داده با دامنه محدود نیز زمانی نادیده گرفته میشوند که یافته، پیکربندی مشترک گزارشگیری یا تلهمتری را گزارش کند، زیرا تغییر تنظیم مشترک بر مواردی فراتر از هدف خطمشی با دامنه محدود اثر میگذارد.
ترمیمهای الزامیِ منعشده با دامنه محدود زمانی نادیده گرفته میشوند که یافته،
tools.deny ریشهایِ بهارثرسیده را گزارش کند، زیرا افزودن ابزار الزامی به
پیکربندی ریشه بر مواردی فراتر از هدف خطمشی با دامنه محدود اثر میگذارد. ترمیمهای
الزامیِ منعشده محلیِ عامل میتوانند مسیر گزارششده agents.list[].tools.deny را
بهروزرسانی کنند.
ترمیمهای ورودی کانال با دامنه محدود زمانی نادیده گرفته میشوند که یافته،
channels.defaults.* بهارثرسیده را گزارش کند، زیرا تغییر مقدار پیشفرض مشترک
کانال بر مواردی فراتر از هدف خطمشی با دامنه محدود اثر میگذارد. یافتههای فهرست
مجاز واکشی URL از طریق HTTP در Gateway همچنان دستی باقی میمانند، زیرا ترمیم
خودکار نمیتواند مقادیر درست فهرست مجاز URL نقاط پایانی را انتخاب کند.
یافتههای اتصال Gateway و فرمان Node همچنان نیازمند بازبینی هستند. وقتی
policy/gateway-non-loopback-bind یا policy/gateway-node-command-denied
را بتوان به یک مسیر پیکربندی نگاشت کرد، doctor --fix تغییر پیشنهادی
gateway.bind یا gateway.nodes.denyCommands را بهصورت راهنمای پیشنمایش
نادیدهگرفتهشده گزارش میکند. این فرمان تغییر را اعمال نمیکند و تا زمانی که
یک اپراتور پیکربندی یا خطمشی را بازبینی و بهروزرسانی نکند، یافته ترمیمشده
محسوب نمیشود.
{ "plugins": { "entries": { "policy": { "config": { "workspaceRepairs": true, }, }, }, },}کدهای خروج
| فرمان | 0 |
1 |
2 |
|---|---|---|---|
policy check |
هیچ یافتهای در آستانه تعیینشده وجود ندارد. | یک یا چند یافته به آستانه تعیینشده رسیدهاند. | شکست آرگومان یا زمان اجرا. |
policy compare |
فایل خطمشی دستکم بهاندازه خط مبنا سختگیرانه است. | فایل خطمشی نامعتبر، مفقود یا ضعیفتر از قواعد خط مبنا است. | شکست آرگومان یا زمان اجرا. |
policy watch |
هیچ یافتهای وجود ندارد و هش پذیرفتهشده بهروز است. | یافتههایی وجود دارند یا گواهی پذیرفتهشده منقضی شده است. | شکست آرگومان یا زمان اجرا. |