Repository navigation
v2.6.0 — Stealth & MCP Hardening
·
13 commits
to master
since this release
Immutable
release. Only release title and notes can be modified.
Stealth & MCP hardening release. Reliability + security focus.
Added
- Stealth patch isolation — each fingerprint patch is now try/catch-isolated; one API mismatch degrades only that signal instead of aborting every later patch.
attach_modeforattach_over_cdp— skipsnavigator.platform/ WebGL vendor-renderer / screen-DPR overrides when attaching to a real browser, so the injected fingerprint no longer contradicts the real OS/GPU/display.- MCP policy + approval gates —
PolicyEngine(step-type/domain allow-lists) andApprovalGatewired into thetools/calldispatch path and workflow replay. Fail-open by default (no policy files = allow all); operators opt into enforcement viaSTEALTH_MCP_POLICYor an approval callback. AdapterToolError— MCP tool results withisError: trueare now surfaced instead of silently treated as success.
Fixed
- WebRTC ICE leak — per-instance
onicecandidaterebind (no prototype-global leak) andaddEventListener('icecandidate')is now filtered too;createDataChannelrestored to real passthrough. - playwright-mcp adapter — pinned
@playwright/mcp@0.0.78with correctedbrowser_navigate/browser_click/browser_typeschema (element/target/text); prior CSS-selector args were rejected by the real server. - CDP bridge —
launch(profile)accepts a rawws/wss/http(s)endpoint or a profile name resolved viaCDP_ENDPOINT_<PROFILE>/CDP_ENDPOINT, aligning it with theBackendAdapterprotocol. - Recovery — rotation failure now propagates (returns
FalseforROTATE_*) and records_update_recovery_history(success=False); unique per-attempt session/proxy names avoid collisions.
Changed
- Adapter
status()gains a canonicalconnectedfield (runningkept as back-compat alias). SessionEnforcerdocumented as defined-but-inert until a multi-client transport supplies per-context tokens.
Full detail in CHANGELOG.md. Tests: 976 passing on CI.