Pavan Kumar Gondhi
6e026c2fe3
fix(gateway): reject unattributable loopback proxy traffic [AI] ( #119950 )
...
* fix(gateway): bind auth limits to ingress attribution
* fix(gateway): close remaining ingress auth gaps
* fix(gateway): carry attribution into new ingress paths
* fix(gateway): close ingress ownership gaps
* fix(gateway): complete proxy ingress hardening
* fix(gateway): stabilize managed Tailscale ingress
* fix(gateway): make Tailscale cleanup ownership-safe
Refuse reset-on-exit publication until Tailscale exposes an atomic owner-bound cleanup operation, and migrate legacy configs with Doctor.
* fix(gateway): finish ingress ownership repair
* fix(gateway): own managed Tailscale route lifetime
Run managed Serve and Funnel routes as foreground claims tied to the Gateway lifecycle. Retire named Service config through Doctor because Tailscale Services cannot run in foreground mode.
Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com >
* fix(gateway): align Tailscale consumers and build guards
Remove the retired named-service config from Telegram Mini App URL resolution and register the lifecycle worker as an explicit production entry.
Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com >
* fix(gateway): preserve retired Tailscale inputs
Keep Funnel enabled when removing an ignored named-Service setting and accept the legacy positive reset flag as a no-op now that managed routes always follow Gateway lifetime.
Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com >
* fix(gateway): preserve Tailscale route diagnostics
Prefer the actionable foreground CLI failure captured during timeout cleanup, and cover the original delayed-failure ordering.
Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com >
* fix(gateway): reconcile Tailscale ingress with main
Preserve current ingress ownership contracts after the rebase, retire the obsolete device-auth migration check, validate route-owner IPC, and move Tailscale auth coverage onto the managed listener.
Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com >
* fix(gateway): finish ingress rebase coverage
Unify the rebased net imports and let module-reset WebSocket tests prepare attribution through the same fresh module instance as the handler.
Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com >
* test(gateway): align run-loop server fixture
---------
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-08-16 21:01:20 -07:00
Peter Steinberger
046a9ffdf4
fix(mcp): make Codex approval dead ends actionable ( #124766 )
...
* fix(mcp): make Codex approval dead ends actionable
* fix(mcp): preserve native approval fallback
* fix(mcp): configure saved approval modes
* fix(mcp): preserve saved Codex metadata
* style(mcp): simplify saved metadata spread
2026-08-16 14:00:08 -07:00
Ayaan Zaidi
6a4a546593
feat(mcp): per-requester OAuth for MCP servers ( #122166 )
...
Per-requester OAuth for HTTP MCP servers: in shared channels each trusted sender connects their own account. New config: mcp.servers.<name>.oauth.identity ("shared" default, byte-identical behavior) and gateway.publicOrigin (HTTPS except loopback) for the new GET /oauth/mcp/callback served on the Gateway HTTP server. Requester tokens are isolated per (channel, account, sender) in mcp_oauth_stores rows (no schema bump); callbacks correlate through a durable state-keyed one-time index with a 10-minute TTL; per-requester servers are fail-closed out of static/scheduled runtimes; unauthenticated senders get a sign-in link with a portable URL button; MCP config mutations clear requester credentials at the canonical owner. mcp status --json keeps the legacy authStatus fields additively. Proven by a two-user self-hosted-Executor E2E through the real gateway callback. Part of #122034 .
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-11 20:58:51 +00:00
Peter Steinberger
de9314301f
fix(mcp): complete browser OAuth login callbacks ( #120431 )
...
* fix(mcp): complete OAuth loopback login
Co-authored-by: 李琪0668001400 <li.qi16@xydigit.com >
* fix(auth): abort loopback DNS resolution safely
* fix(mcp): move callback wait outside state lease
* fix(plugin-sdk): bind the callback redirect host by default
* fix(plugin-sdk): preserve explicit loopback bind hosts
* fix(ci): satisfy loopback callback type and lint gates
* fix(mcp): bind PKCE state to each login attempt
* refactor(mcp): keep verifier override internal
* test(mcp): preserve split OAuth CLI coverage
---------
Co-authored-by: 李琪0668001400 <li.qi16@xydigit.com >
2026-08-08 03:57:55 -07:00
Peter Steinberger
2c5214f9e8
fix(mcp): listen on the OAuth loopback redirect during mcp login ( #120433 )
2026-08-07 19:29:13 -07:00
Peter Steinberger
4c7a8d412b
feat(cli): support --json across reporting commands ( #117928 )
...
* feat(cli): support --json across reporting commands
* test(cli): satisfy json command checks
* test(cli): type json exception map
2026-08-02 02:56:08 -07:00
Peter Steinberger
31ccf56a81
fix(cli): report failed MCP probes to automation ( #116664 )
...
* fix(cli): fail MCP probes without losing output
* test(cli): use shared MCP probe temp cleanup
2026-07-30 21:57:35 -07:00
Peter Steinberger
03a2c8208d
docs(control-ui): document composer capability menu ( #115858 )
...
* docs(control-ui): document composer capability menu
* docs(control-ui): explain tool access discovery states
* docs(map): regenerate docs map
2026-07-29 15:26:56 -04:00
Peter Steinberger
04eb57d299
feat(ui): add contextual Settings documentation links ( #115560 )
...
* feat(config): add contextual settings docs URLs
* feat(ui): add contextual settings guide links
* docs: add settings guide pages
* docs: refresh generated docs map
* docs: polish settings guide pages prose
2026-07-29 01:00:15 -04:00
Peter Steinberger
78b49f3a05
docs: refresh stale cua-driver claims (cross-platform prerelease, real MCP tool names)
2026-07-20 22:18:21 -07:00
Peter Steinberger
7fe1d70a50
fix(mcp): prevent custom server config races and parsing errors ( #111761 )
...
* fix(mcp): harden custom server management
* fix(ui): keep config patch types private
2026-07-20 02:34:13 -07:00
Peter Steinberger
783a5d21cf
refactor(config): purge numeric tuning knobs behind built-in defaults ( #111382 )
2026-07-19 07:35:45 -07:00
Peter Steinberger
58452de711
refactor(config): config-surface reduction tranche 1 — retire dead keys, dedupe channel schemas, add growth ratchet ( #111142 )
...
* refactor(config): retire dead and aliased config keys via doctor migrations
* refactor(config): dedupe bundled channel config schemas into shared builders
* feat(config): add config-surface count ratchet to doc-baseline check
* test(config): drop stale fixtures for retired config keys
* fix(doctor): migrate only positive finite MCP timeout aliases
* fix(migrate-hermes): emit canonical MCP timeouts only
* fix(config): satisfy lint and contract gates
2026-07-19 00:52:37 -07:00
Jason (Json)
9c7800467c
feat(mcp): open App views from channel replies ( #111211 )
...
* feat(mcp): add portable channel app actions
* test(gateway): keep origin reset private
* fix(mcp): require a resolved reply channel
2026-07-19 01:44:15 -06:00
Peter Steinberger
f3d1f02dc1
refactor: move MCP OAuth state to SQLite ( #109844 )
...
* refactor(mcp): move OAuth state to SQLite
* refactor(mcp): tighten OAuth module boundaries
* chore: refresh PR merge ref
* fix(mcp): align storage docs and merge checks
* fix(mcp): surface OAuth reauthorization status
2026-07-17 12:15:16 +01:00
Jason (Json)
1663c8801d
fix(ui): preserve MCP App previews across reloads ( #105728 )
...
* fix(mcp): harden app preview lifecycle
* fix(ui): defer MCP app initialization payload
* test(mcp): align current policy expectations
* fix(ui): preserve MCP app previews
* fix(mcp): reject disabled app restoration
* fix(mcp): preserve reconstructed app state
* fix(mcp): bind reconstructable app data
* fix(ui): deduplicate MCP app preview copies
* style(ui): format MCP app preview test
* fix(mcp): satisfy metadata access lint
* style(mcp): format metadata access
2026-07-12 17:30:34 -06:00
Sally O'Malley
f3971bbd56
feat(mcp): support sandboxed MCP Apps ( #69039 )
...
Implement stable opt-in MCP Apps negotiation, caller-specific tool
visibility, bounded ephemeral UI resources, a dedicated-origin double
iframe host, restrictive CSP, configuration, docs, and regression tests.
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Sally O'Malley <11166065+sallyom@users.noreply.github.com >
2026-07-11 22:04:38 -07:00
James Armstead
65cc86f45c
Refresh MCP OAuth auth-profile tokens ( #96120 )
...
* Refresh MCP OAuth auth-profile tokens
* Rotate Codex MCP binding on bearer changes
* Preserve agent scope for MCP auth profiles
* Preserve Codex MCP tool filters
* Keep Codex MCP projection helper local-only
* Fix Codex projection package boundary artifacts
* Revert "Fix Codex projection package boundary artifacts"
This reverts commit 13bcaed3dafafa8238e9ab16bf201f56d300fae0.
* Revert "Keep Codex MCP projection helper local-only"
This reverts commit 19751f4922d072296376c3ec68d5660c7dfe4204.
* Trigger CI rerun for OAuth MCP PR
* Fail closed for remote Codex MCP bearer projection
* Fix MCP OAuth bearer token projection
* fix: project MCP-native OAuth credentials
* fix: align MCP SDK surface budget
* fix(mcp): keep agents available before OAuth login
---------
Co-authored-by: Josh Lehman <josh@martian.engineering >
2026-07-10 17:49:43 -07:00
Shakker
a3477eafb9
docs: update Control UI MCP settings route
2026-07-07 16:53:48 +01:00
Peter Steinberger
f7d7148cf0
docs: rewrite published docs grounded in current source ( #100142 )
...
Source-grounded rewrite of 529 published docs pages with per-unit information-loss verification: 1,713 factual corrections cited to src/**, generated surfaces regenerated, frontmatter titles preserved for i18n, release notes pages untouched. All docs gates green.
Closes #100141
2026-07-05 00:32:47 -04:00
Agustin Rivera
b885c81479
fix(mcp): require owner for Claude permission replies ( #98256 )
...
* fix(mcp): require owner for Claude permission replies
* fix(mcp): prove owner-gated permission replies
2026-06-30 13:58:02 -07:00
Alix-007
93e3bcef7a
fix(cli): clarify MCP list registry scope ( #87487 )
...
Clarify that `openclaw mcp list`, `show`, `set`, and `unset` manage the OpenClaw `mcp.servers` registry and do not include the separate mcporter registry.
Co-authored-by: Alix-007 <li.long15@xydigit.com >
2026-06-17 10:18:18 +02:00
Pavan Kumar Gondhi
9f413acc18
fix: expand unsafe host env denylist ( #91618 )
...
* fix: expand unsafe host env denylist
* test: annotate host env security fixtures
* test: align opengrep fixture suppressions
* test: keep opengrep suppressions inline
* test: avoid opengrep fixture call patterns
2026-06-09 19:44:54 +05:30
Peter Steinberger
7606e1dd3d
docs: expand MCP operator guide
2026-05-31 10:12:44 +01:00
Peter Steinberger
617c658498
feat: improve MCP operator controls ( #88536 )
...
* feat: improve MCP operator controls
* test: stabilize draft stream loop background errors
* fix: prune empty MCP server enablement stubs
* fix: ignore disabled MCP overrides in doctor
* fix: keep MCP doctor saved-config warnings
* fix: redact malformed MCP URLs in UI
* fix: harden MCP UI command actions
* fix: allow MCP logout after auth removal
2026-05-31 10:06:55 +01:00
Peter Steinberger
38d3d11cbc
feat: improve MCP operator workflows
...
Add MCP server add/configure/login/reload flows plus config/runtime support for enablement, filters, timeouts, OAuth, TLS, and parallel execution hints. Update docs and tests for the expanded MCP operator surface.
2026-05-30 23:51:40 +01:00
Peter Steinberger
99ce71ddbb
feat: improve MCP operability
...
Summary:
- Add MCP status, probe, and projected-tools CLI surfaces.
- Add per-server MCP tool filters plus resource/prompt utility projection.
- Harden MCP runtime discovery, listChanged invalidation, request-failure backoff, and metadata sanitization.
- Preserve current main type health by narrowing the shared future timestamp guard.
Verification:
- pnpm test src/shared/number-coercion.test.ts src/agents/auth-profiles/usage.test.ts src/cli/mcp-cli.test.ts src/agents/agent-bundle-mcp-runtime.test.ts src/agents/agent-bundle-mcp-tools.materialize.test.ts -- --reporter=verbose
- pnpm lint
- pnpm tsgo:prod
- pnpm build
- git diff --check origin/main...HEAD
- GitHub Actions: dependency-guard, real behavior proof, security high MCP boundary, build/lint/types/guards/docs, gateway/plugin/agent shards green on PR head.
Known proof gap:
- Existing checks-node-agentic-commands-doctor no-output watchdog reproduced locally outside touched paths.
2026-05-30 19:48:52 +01:00
Peter Steinberger
bb46b79d3c
refactor: internalize OpenClaw agent runtime ( #85341 )
...
* refactor: extract agent core package
Introduce packages/agent-core as the OpenClaw-owned home for reusable agent loop, harness, session, prompt, and runtime dependency contracts.
* refactor: extract shared llm runtime
Move provider model registries, stream wrappers, OAuth helpers, and LLM utilities into src/llm with plugin-sdk barrels instead of depending on the old embedded runtime layout.
* refactor: remove pi runtime internals
Rename remaining Pi-shaped agent surfaces to OpenClaw agent runtime names, delete obsolete Pi docs and package graph checks, and add the third-party notice for incorporated code.
* refactor: tighten agent session runtime
Make agent-core/runtime dependencies explicit, consolidate compaction and session transcript helpers, and move model/session helpers behind OpenClaw-owned contracts.
* refactor: remove static model and pi auth paths
Drop static model catalogs and Pi auth bridges, move model/provider facts to manifest-owned runtime contracts, and harden internal embedded-agent utilities.
* refactor: remove legacy provider compat paths
* docs: remove agent parity notes
* fix: skip provider wildcard metadata parsing
* refactor: share session extension sdk loading
* refactor: inline acpx proxy error formatter
* refactor: fold edit recovery into edit tool
* fix: accept extension batch separator
* test: align startup provider plugin expectations
* fix: restore provider-scoped release discovery
* test: align static asset packaging expectations
* fix: run static provider catalogs during scoped discovery
* fix: add provider entry catalogs for scoped live discovery
* fix: load lightweight provider catalog entries
* fix: refresh provider-scoped plugin metadata
* fix: keep provider catalog entries on release live path
* fix: keep static manifest models in release live checks
* fix: harden release model discovery
* fix: reduce OpenAI live cache probe reasoning
* fix: disable OpenAI cache probe reasoning
* ci: extend OpenAI gateway live timeout
* fix: extend live gateway model budget
* fix: stabilize release validation regressions
* fix: honor provider aliases in model rows
* fix: stabilize release validation lanes
* fix: stabilize release memory qa
* ci: stabilize release validation lanes
* ci: prefer ipv4 for live docker node calls
* fix: restore shared tool-call stream wrapper
* ci: remove legacy pi test shard alias
* fix: clean up embedded agent test drift
* fix: stabilize runtime alias status
* fix: clean up embedded agent ci drift
* fix: restore release ci invariants
* fix: clean up post-rebase runtime drift
* fix: restore release ci checks
* fix: restore release ci after rebase
* fix: remove stale pi runtime path
* test: align compaction runtime expectations
* test: update plugin prerelease expectations
* fix: handle claude live tool approvals
* fix: stabilize release validation gates
* fix: finish agent runtime import
* test: finish post-rebase agent runtime mocks
* fix: keep codex compaction native
* fix: stabilize codex app-server hook tests
* test: isolate codex diagnostic active run
* test: remove codex diagnostic completion race
# Conflicts:
# extensions/codex/src/app-server/run-attempt.test.ts
* ci: fix full release manifest performance run id
* refactor: narrow llm plugin sdk boundary
* chore: drop generated google boundary stamps
* fix: repair rebase fallout
* fix: clean up rebased runtime references
* fix: decode codex jwt payloads as base64url
* fix: preserve shipped pi runtime alias
* fix: add scoped sdk virtual modules
* fix: decode llm codex oauth jwt as base64url
* fix: avoid stale vertex adc negative cache
* fix: harden tool arg decoding and codeql path
* fix: keep vertex adc negative checks live
* refactor: consolidate codex jwt and edit helpers
* fix: await codex oauth node runtime imports
* fix: preserve sdk tool and notice contracts
* fix: preserve shipped compat config boundaries
* fix: align codex oauth callback host
* fix: terminate agent-core loop streams on failure
* fix: keep codex oauth callback alive during fallback
* ci: include session tools in critical codeql scans
* fix: keep Cloudflare Anthropic provider auth header
* docs: redirect legacy pi runtime pages
* fix: honor bundled web provider compat discovery
* fix: protect session output spill files
* fix: keep legacy agent dir env blocked
* fix: contain auto-discovered skill symlinks
* fix: harden agent core sdk proxy surfaces
* fix: restore approval reaction sdk compat
* fix: keep live docker runs bounded
* fix: keep codex oauth redirect host aligned
* fix: resolve post-rebase agent runtime drift
* fix: redact anthropic oauth parse failures
* fix: preserve responses strict tool shaping
* fix: repair agent runtime rebase cleanup
* docs: redirect retired parity pages
* fix: bound auto-discovered resources to roots
* fix: repair post-rebase agent test drift
* fix: preserve bundled provider allowlist migration
* fix: preserve manifest-owned provider aliases
* fix: declare photon image dependency
* fix: keep provider headers out of proxy body
* fix: preserve shipped env aliases
* fix: refresh control ui i18n generated state
* fix: quote read fallback paths
* fix: preview edits through configured backend
* test: satisfy core test typecheck
* fix: preserve ZAI usage auth fallback
* test: repair codex diagnostic test
* fix: repair agent runtime rebase drift
* test: finish embedded runner import rename
* fix: repair agent runtime rebase integrations
* test: align compaction oauth fallback expectations
* fix: allow sdk-auth session models
* fix: update doctor tool schema import
* fix: preserve bedrock plugin region
* fix: stream harmony-like prose immediately
* ci: include session runtime in codeql shards
* fix: repair latest rebase integrations
* fix: honor explicit codex websocket transport
* fix: keep openai-compatible credentials provider-scoped
* fix: refresh sdk api baseline after rebase
* fix: route cli runtime aliases through openclaw harness
* test: rename stale harness mock expectation
* test: rename embedded agent overflow calls
* test: clean embedded auth test wording
* test: use openclaw stream types in deepinfra cache test
* fix: refresh sdk api baseline on latest main
* fix: honor bundled discovery compat allowlists
* fix: refresh sdk api baseline after latest rebase
* fix: remove stale rebase imports
* test: rename stale model catalog mock
* test: mock renamed doctor runtime modules
* fix: map canonical kimi env auth
* fix: use internal model registry in bench script
* fix: migrate deepinfra provider catalog entry
* fix: enforce builtin tool suppression
* fix: route compaction auth and proxy payloads safely
* refactor: prune unused llm registry leftovers
* test: update codex hooks session import
* test: fix model picker ci coverage
* test: align model picker auth mock types
2026-05-27 19:24:04 +01:00
Pavan Kumar Gondhi
91590132f6
Block unsafe Node runtime env overrides [AI] ( #87308 )
...
* fix: block unsafe node runtime env overrides
* fix: block node env path redirects
* docs: add changelog entry for PR merge
2026-05-27 20:34:12 +05:30
Sergio Cadavid
472523360d
fix(codex): scope user MCP servers by agent ( #82180 )
2026-05-15 20:17:16 +01:00
Peter Steinberger
0ea28ddb16
fix: speed up exact session lookups
2026-05-02 14:29:36 +01:00
Peter Steinberger
78a12706ec
fix(docs): make docs formatter mintlify-safe
2026-04-28 08:13:21 +01:00
Peter Steinberger
053aff6d35
fix(mcp): normalize streamable http server aliases
2026-04-27 12:29:24 +01:00
Vincent Koc
6c60cd2b72
docs(mcp): rewrite with Steps for lifecycle, Tabs for client modes, ParamField for serve options, AccordionGroup for tools
2026-04-26 00:08:16 -07:00
Peter Steinberger
dcfd5913fd
refactor(agents): share bundle MCP config merging
2026-04-25 21:36:22 +01:00
Peter Steinberger
e0bee76fb0
fix: retire one-shot agent MCP runtimes
2026-04-25 08:58:02 +01:00
Peter Steinberger
b34ece705f
fix: retire idle bundled MCP runtimes
2026-04-25 07:49:12 +01:00
Vincent Koc
8d1f98ef08
docs(gateway,platforms,cli): add Related sections to entry and reference pages
2026-04-23 20:08:26 -07:00
Vincent Koc
2777b089b5
docs: normalize frontmatter titles to sentence case
2026-04-23 13:15:17 -07:00
Vincent Koc
4a2cd533ac
docs: remove duplicate H1 where frontmatter title already sets it
2026-04-23 13:11:14 -07:00
Vincent Koc
91c795cee0
docs: MCP + cron + plugin lifecycle plus channel env-block cross-links
2026-04-22 23:56:53 -07:00
Peter Steinberger
c4e5ca8625
fix(agents): expose configured MCP tools in Pi profiles
2026-04-23 00:47:37 +01:00
Vincent Koc
b4a59be9b6
docs: document stdio env filter, enforceOwnerForCommands, OPENCLAW_* .env blocking
2026-04-21 13:21:34 -07:00
Peter Steinberger
6067fe59d8
docs: refresh mcp config refs
2026-04-04 16:15:11 +01:00
Peter Steinberger
1d1c52e6e6
docs: refresh mcp approvals and hooks refs
2026-04-04 08:46:37 +01:00
Vincent Koc
c42659176a
docs: cover unreleased feature gaps (Telegram errorPolicy, Android notifications, node pairing, Slack approvals, MCP transport, reactions)
2026-04-01 22:20:20 +09:00
Vincent Koc
22ffe7b1de
docs: fix before_install finding field name, add MCP SSE transport docs, add acpx auto-install note
2026-03-30 06:53:35 +09:00
Peter Steinberger
048a4e4f9e
docs: clarify mcp server and client modes
2026-03-28 04:10:20 +00:00
Peter Steinberger
71f37a59ca
feat: add openclaw channel mcp bridge
2026-03-28 02:41:57 +00:00