Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/agent-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,9 @@ before the skill is loaded (or if it is removed), the tools are absent. Ask mode
still filters out mutating and download tools even when their owning skill is
loaded. See [skills](skills.md).

**WebMCP (experimental, opt-in).** The `list_webmcp_tools` /
`execute_webmcp_tool` rows apply only when **Experimental WebMCP** is enabled
under Settings → General → Advanced. The setting is off by default; while off,
**WebMCP (experimental, on by default).** The `list_webmcp_tools` /
`execute_webmcp_tool` rows apply when **Experimental WebMCP** is enabled
under Settings → General → Advanced. The setting is on by default; while off,
the tools and their prompt guidance are omitted from model requests. WebMCP
annotations such as `readOnly` are page-authored hints, not a security boundary.
Every invocation requires Act or Dev, fresh per-call confirmation, and the
Expand Down
6 changes: 3 additions & 3 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -838,9 +838,9 @@ This does not handle browser permission requests, authentication windows, or
OS file pickers. Firefox WebExtensions provide no equivalent native-dialog API;
those dialogs still require manual handling in Firefox.

WebMCP is an experimental Chrome-only fast path that is off by default. The
user must enable **Experimental WebMCP** under Settings → General → Advanced;
until then, neither WebMCP tool schemas nor WebMCP prompt guidance enter model
WebMCP is an experimental Chrome-only fast path that is on by default. The
user can disable **Experimental WebMCP** under Settings → General → Advanced;
when disabled, neither WebMCP tool schemas nor WebMCP prompt guidance enter model
requests. When enabled, `list_webmcp_tools` is
available in Ask, Act, and Dev; `execute_webmcp_tool` is restricted to Act/Dev
and every invocation requires fresh confirmation plus permission against the
Expand Down
2 changes: 1 addition & 1 deletion docs/claude-chrome-comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ core surface, including Dev-only `execute_js`, is shared.
| Reading/extraction | `read_page`, `read_pdf`, `read_page_source`, `extract_data`, `inspect_element_styles`, `get_selection`, `find_text` |
| Dev editing and diagnostics | `inject_css`, `remove_injected_css`, `patch_element`, `revert_patch`, `execute_js`, `read_console`, `inspect_network_requests`, `inspect_event_listeners`, `highlight_element` |
| Shadow DOM and frames | `get_shadow_dom`, `shadow_dom_query` on Chrome, `get_frames`, `iframe_read`, `iframe_click`, `iframe_type`, `promote_iframe` |
| WebMCP (experimental) | `list_webmcp_tools`, `execute_webmcp_tool` on supported Chrome builds when enabled |
| WebMCP (experimental, on by default) | `list_webmcp_tools`, `execute_webmcp_tool` on supported Chrome builds when enabled |
| Network and files | `fetch_url`, `research_url`, `list_downloads`, `read_downloaded_file`, `download_resource_from_page`, `download_files`, `upload_file` |
| Long-running work | `schedule_resume`, `schedule_task`, `scratchpad_write`, `progress_update`, `progress_read` |
| Safety/workflow | `verify_form`, `clarify`, `done`, `solve_captcha` |
Expand Down
8 changes: 4 additions & 4 deletions docs/fr/agent-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,11 +121,11 @@ absents. Le mode Ask filtre toujours les outils de mutation et de téléchargeme
même lorsque la compétence propriétaire est chargée. Voir
[compétences](skills.md).

**WebMCP (expérimental, sur activation).** Les lignes `list_webmcp_tools` /
**WebMCP (expérimental, activé par défaut).** Les lignes `list_webmcp_tools` /
`execute_webmcp_tool` ne s'appliquent que lorsque **WebMCP expérimental** est
activé dans Paramètres → Général → Avancé. Le réglage est désactivé par défaut ;
tant qu'il l'est, les outils et leurs consignes de prompt sont omis des requêtes
au modèle. Les annotations WebMCP telles que `readOnly` sont des indications
activé dans Paramètres → Général → Avancé. Le réglage est activé par défaut ;
lorsqu'il est désactivé, les outils et leurs consignes de prompt sont omis des
requêtes au modèle. Les annotations WebMCP telles que `readOnly` sont des indications
écrites par la page, pas une frontière de sécurité. Chaque invocation exige Act
ou Dev, une confirmation fraîche à chaque appel, et la permission normale
capacité × origine de la frame d'enregistrement. WebMCP nécessite actuellement
Expand Down
2 changes: 1 addition & 1 deletion docs/fr/claude-chrome-comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ de la surface de base, y compris `execute_js` réservé au mode Dev, est partag
| Lecture/extraction | `read_page`, `read_pdf`, `read_page_source`, `extract_data`, `inspect_element_styles`, `get_selection`, `find_text` |
| Édition et diagnostic Dev | `inject_css`, `remove_injected_css`, `patch_element`, `revert_patch`, `execute_js`, `read_console`, `inspect_network_requests`, `inspect_event_listeners`, `highlight_element` |
| Shadow DOM et cadres | `get_shadow_dom`, `shadow_dom_query` sur Chrome, `get_frames`, `iframe_read`, `iframe_click`, `iframe_type`, `promote_iframe` |
| WebMCP (expérimental) | `list_webmcp_tools`, `execute_webmcp_tool` sur les versions Chrome compatibles lorsque l'option est activée |
| WebMCP (expérimental, activé par défaut) | `list_webmcp_tools`, `execute_webmcp_tool` sur les versions Chrome compatibles lorsque l'option est activée |
| Réseau et fichiers | `fetch_url`, `research_url`, `list_downloads`, `read_downloaded_file`, `download_resource_from_page`, `download_files`, `upload_file` |
| Travail longue durée | `schedule_resume`, `schedule_task`, `scratchpad_write`, `progress_update`, `progress_read` |
| Sécurité/flux de travail | `verify_form`, `clarify`, `done`, `solve_captcha` |
Expand Down
8 changes: 4 additions & 4 deletions docs/privacy-and-data-flow.md
Original file line number Diff line number Diff line change
Expand Up @@ -377,10 +377,10 @@ the URL + method to the active LLM conversation.

### Experimental WebMCP

WebMCP is off by default. A user must enable **Experimental WebMCP** under
Settings → General → Advanced before WebBrain sends its tool schemas or prompt
guidance to the configured LLM. On supporting Chrome pages, WebBrain can then
enable the experimental CDP `WebMCP` domain. Chrome reports the structured tools registered by the current page,
WebMCP is on by default. A user can disable **Experimental WebMCP** under
Settings → General → Advanced to prevent WebBrain from sending its tool schemas
or prompt guidance to the configured LLM. On supporting Chrome pages, WebBrain
can enable the experimental CDP `WebMCP` domain. Chrome reports the structured tools registered by the current page,
including their page-supplied name, description, input schema, annotations, and
registration frame. WebBrain keeps a bounded in-memory per-tab catalog, assigns
opaque `wmcp_*` IDs, and removes it when the conversation/tab CDP session is
Expand Down
2 changes: 1 addition & 1 deletion docs/security-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ The primary threat: a malicious page crafts content that, when read by the agent
| **Tiered tool exposure** | Provider tiers (`compact | mid | full`) limit the normal browser-agent surface for smaller models. Compact gets the smallest action surface; Mid adds common task tools; Full adds advanced UI/DOM fallbacks. Compact Dev is blocked. |
| **Plan before Act** | When enabled, action-mode runs first produce a structured plan and wait for side-panel approval before any browser tool executes. In Try mode, planner JSON that remains invalid after repair degrades that turn to Ask/read-only; Strict stops. Scheduled runs can auto-approve the plan only through scheduler policy. |
| **Skill import boundary** | Skills can expose read-only HTTP tools and download-job tools through a `webbrain-tools` manifest. Importing or keeping the skill enabled is the trust decision for the declared HTTPS endpoint; declared skill tools use `credentials: "omit"` and should mark third-party results `resultPolicy: "untrusted"`. Download-job skill tools still require an action mode and the normal Downloads permission gate before saving files. |
| **WebMCP boundary** | Experimental WebMCP is off by default, so its tools and prompt guidance do not enter ordinary model requests unless the user opts in under Settings → General → Advanced. When enabled, Chrome page-registered names, descriptions, schemas, frame URLs, annotations, outputs, and errors are page-controlled and always use the untrusted-content wrapper. Calls use opaque IDs. Ask may list tools but cannot invoke them. Because a callback can run arbitrary page logic, every invocation requires Act/Dev, fresh per-call confirmation, and a permission grant for the actual registration-frame origin; a page-authored `readOnly` hint never bypasses those gates. Missing/opaque frame identity fails closed, and the frame plus effective HTTP(S) security origin are revalidated immediately before dispatch to prevent navigation races from borrowing an old grant. |
| **WebMCP boundary** | Experimental WebMCP is on by default, so its tools and prompt guidance enter ordinary model requests unless the user opts out under Settings → General → Advanced. Chrome page-registered names, descriptions, schemas, frame URLs, annotations, outputs, and errors are page-controlled and always use the untrusted-content wrapper. Calls use opaque IDs. Ask may list tools but cannot invoke them. Because a callback can run arbitrary page logic, every invocation requires Act/Dev, fresh per-call confirmation, and a permission grant for the actual registration-frame origin; a page-authored `readOnly` hint never bypasses those gates. Missing/opaque frame identity fails closed, and the frame plus effective HTTP(S) security origin are revalidated immediately before dispatch to prevent navigation races from borrowing an old grant. |
| **API mutation override** | A per-conversation `/allow-api` flag, or the default-on persistent setting under General → Advanced, *waives* the permission prompt for write-method network egress (`fetch_url`/`research_url` with POST/PUT/PATCH/DELETE). Neither option waives GET egress or any other capability. Conversation reset clears only the slash-command override. |
| **TypeSafe System One sidecar** | Optional scheduled-task judging and fast decisions send only bounded task/observation state to the documented TypeSafe endpoint. They are off by default, require explicit per-feature switches and a user-provided API key, and Jev has no direct browser executor. Scheduled judging can only downgrade an existing success; fast decisions become ordinary tool calls that still pass the normal policy, permission and completion layers. Strict Secret Mode, cancellation and cost limits apply. Malformed responses fail open to the main model and stop further Jev requests for that run. |
| **`done()` blocking** | Before accepting completion, the agent probes for open dialogs/forms. If the summary claims "created"/"saved" but a modal is still open, the agent is forced to continue. |
Expand Down
4 changes: 2 additions & 2 deletions docs/zh-CN/agent-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,9 @@ FreeSkillz.xyz 技能可暴露 `read_youtube_transcript` 以及 `resolve_public_
`download_public_media`。这些工具未硬编码:技能加载前(或被移除后)它们并不存在。
即使所属技能已加载,Ask 模式仍会过滤变更类和下载类工具。参见[技能](skills.md)。

**WebMCP(实验性,需选择启用)。** 上表中的 `list_webmcp_tools` /
**WebMCP(实验性,默认启用)。** 上表中的 `list_webmcp_tools` /
`execute_webmcp_tool` 行仅在设置 → 常规 → 高级中启用**实验性 WebMCP** 时适用。
该设置默认关闭;关闭时,这些工具及其提示引导不会包含在模型请求中。诸如
该设置默认开启;关闭时,这些工具及其提示引导不会包含在模型请求中。诸如
`readOnly` 之类的 WebMCP 注解是页面自行声明的提示,而非安全边界。每次调用都需要
Act 或 Dev 模式、逐次的新确认,以及常规的「能力 × 注册帧来源」权限。WebMCP 目前
需要支持它的 Chrome 构建/页面配置;Firefox 不暴露这些工具。
Expand Down
2 changes: 1 addition & 1 deletion docs/zh-CN/claude-chrome-comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ Firefox 不包含 Chrome 独有的 Dev 工具和 `shadow_dom_query`;其余核
| 读取/提取 | `read_page`、`read_pdf`、`read_page_source`、`extract_data`、`inspect_element_styles`、`get_selection`、`find_text` |
| Dev 编辑与诊断 | `inject_css`、`remove_injected_css`、`patch_element`、`revert_patch`、`execute_js`、`read_console`、`inspect_network_requests`、`inspect_event_listeners`、`highlight_element` |
| Shadow DOM 和框架 | `get_shadow_dom`、`shadow_dom_query`(Chrome)、`get_frames`、`iframe_read`、`iframe_click`、`iframe_type`、`promote_iframe` |
| WebMCP(实验性) | 在兼容的 Chrome 构建中启用后提供 `list_webmcp_tools`、`execute_webmcp_tool` |
| WebMCP(实验性,默认启用) | 在兼容的 Chrome 构建中启用后提供 `list_webmcp_tools`、`execute_webmcp_tool` |
| 网络和文件 | `fetch_url`、`research_url`、`list_downloads`、`read_downloaded_file`、`download_resource_from_page`、`download_files`、`upload_file` |
| 长时间运行的工作 | `schedule_resume`、`schedule_task`、`scratchpad_write`、`progress_update`、`progress_read` |
| 安全/工作流 | `verify_form`、`clarify`、`done`、`solve_captcha` |
Expand Down
5 changes: 2 additions & 3 deletions src/chrome/src/agent/agent.js
Original file line number Diff line number Diff line change
Expand Up @@ -1018,9 +1018,8 @@ export class Agent extends LoopDetector {
// Defaults to true at extension runtime via background.js and Settings.
this.strictSecretMode = false;

// Experimental Chrome WebMCP integration. Off by default so ordinary
// runs do not pay for unused tool schemas or prompt guidance. Users can
// opt in from Settings → General → Advanced.
// Keep WebMCP unavailable until the persisted setting is successfully
// hydrated. A missing value defaults on, while storage failures fail closed.
this.webMcpEnabled = false;

// Profile auto-fill: when enabled, the user's profile text (name,
Expand Down
9 changes: 6 additions & 3 deletions src/chrome/src/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@ const scheduler = new ScheduledJobManager({
await customSkillsReady;
await alwaysAllowApiMutationsReady;
await strictSecretModeReady;
await webMcpEnabledReady;
if (providerManager.providers.size === 0) await providerManager.load();
},
sendUpdate: (tabId, type, data) => {
Expand Down Expand Up @@ -593,9 +594,11 @@ const strictSecretModeReady = loadStrictSecretMode().catch(() => {});

async function loadWebMCPEnabled() {
const stored = await chrome.storage.local.get('webMcpEnabled');
agent.setWebMCPEnabled(stored.webMcpEnabled === true);
agent.setWebMCPEnabled(stored.webMcpEnabled !== false);
}
const webMcpEnabledReady = loadWebMCPEnabled().catch(() => {});
const webMcpEnabledReady = loadWebMCPEnabled().catch(() => {
agent.setWebMCPEnabled(false);
});

// Profile auto-fill: user-provided text (name, email, etc.) that gets
// appended to the system prompt when enabled. Plaintext in storage —
Expand Down Expand Up @@ -1264,7 +1267,7 @@ chrome.storage.onChanged.addListener((changes, areaName) => {
refreshPrompts = true;
}
if (changes.webMcpEnabled) {
agent.setWebMCPEnabled(changes.webMcpEnabled.newValue === true);
agent.setWebMCPEnabled(changes.webMcpEnabled.newValue !== false);
}
if (changes.profileEnabled) {
agent.profileEnabled = !!changes.profileEnabled.newValue;
Expand Down
2 changes: 1 addition & 1 deletion src/chrome/src/config-transfer.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export const DEFAULT_CONFIG_SETTINGS = Object.freeze({
alwaysAllowApiMutations: true,
apiMutationObserverEnabled: true,
pdfViewerEnabled: true,
webMcpEnabled: false,
webMcpEnabled: true,
openaiAskStreamingEnabled: true,
planBeforeActMode: 'try',
planBeforeAct: true,
Expand Down
2 changes: 1 addition & 1 deletion src/chrome/src/ui/locales/ar.js
Original file line number Diff line number Diff line change
Expand Up @@ -837,7 +837,7 @@ export default {
'st.display.plan_before_act.strict': 'تخطيط صارم',
'st.display.plan_before_act.off': 'معطل',
"st.display.webmcp.label": "WebMCP تجريبي",
"st.display.webmcp.desc": "اسمح لـ WebBrain باكتشاف وتشغيل الأدوات المنظمة التي تعرضها صفحات Chrome المدعومة. يؤدي التفعيل إلى إضافة أدوات WebMCP التجريبية وإرشاداتها إلى سياق النموذج. معطل افتراضيًا.",
"st.display.webmcp.desc": "اسمح لـ WebBrain باكتشاف وتشغيل الأدوات المنظمة التي تعرضها صفحات Chrome المدعومة. يؤدي التفعيل إلى إضافة أدوات WebMCP التجريبية وإرشاداتها إلى سياق النموذج. مفعّل افتراضيًا.",
// --- Recording, attachments, queue, progress, and voice input ---
"sp.record.full_screen_started_html": "بدأ تسجيل الشاشة/النافذة. أوقفه بزر <strong>إيقاف</strong> في شريط التسجيل، أو بالضغط على <code>Escape</code> مرتين في WebBrain أو في صفحة المتصفح، أو باستخدام زر إيقاف المشاركة في Chrome. أضف <code>--hide-recording-indicator</code> لإبقاء الشريط خارج الفيديو.",
"sp.record.full_screen_started_hidden_html": "بدأ تسجيل الشاشة/النافذة. اضغط على <code>Escape</code> مرتين في WebBrain أو في صفحة المتصفح للإيقاف، أو استخدم زر إيقاف المشاركة في Chrome.",
Expand Down
2 changes: 1 addition & 1 deletion src/chrome/src/ui/locales/bn.js
Original file line number Diff line number Diff line change
Expand Up @@ -651,7 +651,7 @@ export default {
'st.display.api_mutation_observer.label': "API মিউটেশন পর্যবেক্ষক",
'st.display.api_mutation_observer.desc': "একই-ট্যাব XHR/ফেচ অনুরোধ URL এবং পদ্ধতিগুলি পর্যবেক্ষণ করুন যাতে WebBrain বারবার UI অ্যাকশন সনাক্ত করতে পারে এবং API শর্টকাট প্যাটার্নের পরামর্শ দিতে পারে। ডিফল্টভাবে চালু।",
'st.display.webmcp.label': "পরীক্ষামূলক WebMCP",
'st.display.webmcp.desc': "WebBrain সমর্থিত Chrome পৃষ্ঠাগুলির দ্বারা প্রকাশিত কাঠামোগত সরঞ্জামগুলি আবিষ্কার এবং চালানোর অনুমতি দিন৷ এটি সক্ষম করলে মডেল প্রসঙ্গে পরীক্ষামূলক WebMCP টুল এবং নির্দেশিকা যোগ হয়। ডিফল্টরূপে বন্ধ।",
'st.display.webmcp.desc': "WebBrain সমর্থিত Chrome পৃষ্ঠাগুলির দ্বারা প্রকাশিত কাঠামোগত সরঞ্জামগুলি আবিষ্কার এবং চালানোর অনুমতি দিন৷ এটি সক্ষম করলে মডেল প্রসঙ্গে পরীক্ষামূলক WebMCP টুল এবং নির্দেশিকা যোগ হয়। ডিফল্টরূপে চালু।",
'st.display.openai_ask_streaming.label': "Ask মোডে প্রতিক্রিয়া স্ট্রিম করুন",
'st.display.openai_ask_streaming.desc': "সমর্থিত প্রদানকারীদের জন্য Ask মোডে পাঠ্য আসার সাথে সাথেই দেখান। বিঘ্নিত স্ট্রিম একটি বিজ্ঞপ্তি দেখায় এবং স্ট্রিম ছাড়াই একবার পুনরায় চেষ্টা করে; প্রদানকারী/API ত্রুটিগুলি এখনও দেখানো হয়। টুল কল স্ট্রিম শেষ হওয়ার অপেক্ষা করে; Act, Dev, নির্ধারিত, ক্লাউড ও Continue চালনা স্ট্রিমবিহীন থাকে। ডিফল্টভাবে চালু।",
'st.display.plan_before_act.label': "আইনের আগে পরিকল্পনা করুন",
Expand Down
Loading
Loading