fix: #21 Browser Use über den privaten Reverse Proxy anbieten #32

Merged
frank merged 4 commits from agent/issue-21-browser-use-über-den-privaten-reverse-p into main 2026-07-17 15:45:59 +02:00
Owner

Änderungen

  • chromedp-Backend mit isolierten BrowserContexts und opaque Session-IDs
  • acht dynamische browser_*-MCP-Tools
  • Capability-Handshake und typisierte Tunneloperationen
  • SSRF-Schutz für Navigationen, Redirects und Subresources
  • policy-gepinnter Loopback-Egress-Proxy gegen DNS-Rebinding
  • harte Session-, Tab-, Laufzeit-, Aktions-, Snapshot- und Artefaktlimits
  • Downloads deaktiviert; Screenshots über kurzlebige Resource Links
  • ADR, Konfiguration und Betriebs-/Sandbox-Dokumentation
  • opt-in Chromium-E2E-Test für JavaScript-Interaktion, Quell-IP und Session-Isolation

Prüfung

  • go vet ./...
  • go test ./...
  • Race-Tests für Browser-, Tunnel- und Connector-Pfade
  • vier Commits erstellt und gepusht; Arbeitsbaum sauber

Kurzfassung: Browser Use läuft ausschließlich auf dem privaten Proxy, wird dynamisch angeboten und ist durch Session-Isolation, Netzwerk-Policy, gepinnte Egress-Adressen und Ressourcenlimits abgesichert.
Ich prüfe Branch, Tests und die Abdeckung der Akzeptanzkriterien; fehlende, klar abgrenzbare Punkte ergänze ich mit separaten Commits.Die Tests benötigen einen isolierten Go-Cache, weil der globale Build-Cache außerhalb des Worktrees nicht lesbar ist; danach gleiche ich Implementierung und Sicherheitsgrenzen gegen die Issue ab.Die Umsetzung deckt Backend-Abstraktion, Capability-Handshake, isolierte Kontexte, Artefaktlimits und Tunnel-Abbruch bereits ab. Ich führe die Suite nun außerhalb der Netzwerk-Sandbox aus, da mehrere E2E-/SSRF-Tests lokale Listener benötigen.Keine offenen TODOs oder uncommitteten Änderungen gefunden. Die vollständige Suite ist grün; der reale Chromium-E2E-Test ist vorhanden, kann in dieser Umgebung aber ohne installiertes Chromium nicht gestartet werden. Ich pushe die vier thematischen Browser-Commits.PR_TITLE: feat(browser): provide isolated Chromium sessions through private proxy

PR_BODY:

  • chromedp backend, capability handshake, MCP tools, session isolation, policy-enforced egress and artifact limits are implemented.
  • ADR, operator documentation, SSRF coverage and real Chromium E2E test are included.
  • Verified: go test ./... passes.

Alles Implementiert

Closes #21

## Änderungen - chromedp-Backend mit isolierten BrowserContexts und opaque Session-IDs - acht dynamische `browser_*`-MCP-Tools - Capability-Handshake und typisierte Tunneloperationen - SSRF-Schutz für Navigationen, Redirects und Subresources - policy-gepinnter Loopback-Egress-Proxy gegen DNS-Rebinding - harte Session-, Tab-, Laufzeit-, Aktions-, Snapshot- und Artefaktlimits - Downloads deaktiviert; Screenshots über kurzlebige Resource Links - ADR, Konfiguration und Betriebs-/Sandbox-Dokumentation - opt-in Chromium-E2E-Test für JavaScript-Interaktion, Quell-IP und Session-Isolation ## Prüfung - `go vet ./...` - `go test ./...` - Race-Tests für Browser-, Tunnel- und Connector-Pfade - vier Commits erstellt und gepusht; Arbeitsbaum sauber Kurzfassung: Browser Use läuft ausschließlich auf dem privaten Proxy, wird dynamisch angeboten und ist durch Session-Isolation, Netzwerk-Policy, gepinnte Egress-Adressen und Ressourcenlimits abgesichert. Ich prüfe Branch, Tests und die Abdeckung der Akzeptanzkriterien; fehlende, klar abgrenzbare Punkte ergänze ich mit separaten Commits.Die Tests benötigen einen isolierten Go-Cache, weil der globale Build-Cache außerhalb des Worktrees nicht lesbar ist; danach gleiche ich Implementierung und Sicherheitsgrenzen gegen die Issue ab.Die Umsetzung deckt Backend-Abstraktion, Capability-Handshake, isolierte Kontexte, Artefaktlimits und Tunnel-Abbruch bereits ab. Ich führe die Suite nun außerhalb der Netzwerk-Sandbox aus, da mehrere E2E-/SSRF-Tests lokale Listener benötigen.Keine offenen TODOs oder uncommitteten Änderungen gefunden. Die vollständige Suite ist grün; der reale Chromium-E2E-Test ist vorhanden, kann in dieser Umgebung aber ohne installiertes Chromium nicht gestartet werden. Ich pushe die vier thematischen Browser-Commits.PR_TITLE: feat(browser): provide isolated Chromium sessions through private proxy PR_BODY: - chromedp backend, capability handshake, MCP tools, session isolation, policy-enforced egress and artifact limits are implemented. - ADR, operator documentation, SSRF coverage and real Chromium E2E test are included. - Verified: `go test ./...` passes. Alles Implementiert Closes #21
Author
Owner

🚧 WIP pull request opened — linked to issue #21. Agent is working…

🚧 **WIP pull request opened** — linked to issue #21. Agent is working…
Author
Owner

💭 Agent progress

Planning initial repository inspection
Ich prüfe zuerst Architektur, bestehende Tunnel-/Policy-Schnittstellen und den aktuellen Branchzustand. Danach implementiere ich ADR, Browser-Adapter und Tests in kleinen, jeweils gepushten Commits.

  • [in_progress] Repository, Richtlinien und bestehenden Private-Proxy-Fluss analysieren
  • [pending] ADR und Browser-Adapter/Capability-Grundlage implementieren, testen, committen und pushen
  • [pending] Browser-Tools, Isolation, Limits und Policy-Anbindung implementieren, testen, committen und pushen
  • [pending] End-to-End-/Sicherheitstests und Dokumentation ergänzen, Gesamtprüfung, committen und pushen
💭 **Agent progress** **Planning initial repository inspection** Ich prüfe zuerst Architektur, bestehende Tunnel-/Policy-Schnittstellen und den aktuellen Branchzustand. Danach implementiere ich ADR, Browser-Adapter und Tests in kleinen, jeweils gepushten Commits. - [in_progress] Repository, Richtlinien und bestehenden Private-Proxy-Fluss analysieren - [pending] ADR und Browser-Adapter/Capability-Grundlage implementieren, testen, committen und pushen - [pending] Browser-Tools, Isolation, Limits und Policy-Anbindung implementieren, testen, committen und pushen - [pending] End-to-End-/Sicherheitstests und Dokumentation ergänzen, Gesamtprüfung, committen und pushen
Author
Owner

💭 Agent progress

Planning file inspection

💭 **Agent progress** **Planning file inspection**
Author
Owner

💭 Agent progress

Evaluating chromedp dependency choice
Der bestehende Tunnel transportiert bereits typisierte HTTP- und Media-Operationen über eine gemeinsame Request-Pipeline und kündigt optionale Fähigkeiten beim Handshake an. Ich erweitere dieses Muster um einen bibliotheksneutralen Browser-Requestvertrag; die Chromium-Steuerung bleibt ausschließlich im private-proxy-Prozess.

💭 **Agent progress** **Evaluating chromedp dependency choice** Der bestehende Tunnel transportiert bereits typisierte HTTP- und Media-Operationen über eine gemeinsame Request-Pipeline und kündigt optionale Fähigkeiten beim Handshake an. Ich erweitere dieses Muster um einen bibliotheksneutralen Browser-Requestvertrag; die Chromium-Steuerung bleibt ausschließlich im `private-proxy`-Prozess.
Author
Owner

💭 Agent progress

Requesting executeRequest details

💭 **Agent progress** **Requesting executeRequest details**
Author
Owner

💭 Agent progress

Designing chromedp integration with tests

💭 **Agent progress** **Designing chromedp integration with tests**
Author
Owner

💭 Agent progress

Deciding to download v0.15.1

💭 **Agent progress** **Deciding to download v0.15.1**
Author
Owner

💭 Agent progress

Rerunning escalated process automatically

💭 **Agent progress** **Rerunning escalated process automatically**
Author
Owner

💭 Agent progress

Inspecting Go module compatibility

💭 **Agent progress** **Inspecting Go module compatibility**
Author
Owner

💭 Agent progress

Evaluating Go module versioning options

💭 **Agent progress** **Evaluating Go module versioning options**
Author
Owner

💭 Agent progress

Updating to Go 1.25 and v0.14.2 dependencies

💭 **Agent progress** **Updating to Go 1.25 and v0.14.2 dependencies**
Author
Owner

💭 Agent progress

Planning CDP network interception implementation

Designing browser session and artifact handling

Extending artifact read interface to browser executor

Designing browser artifact handling and snapshot methods

Defining safe click and wait strategies with concurrency handling

Refining chromedp browser context handling

Designing session lifecycle and memory limits

Planning documentation in repo via ADR

Planning ADR documentation approach
Die ADR entscheidet sich für chromedp als MVP: ein Go-Prozess, ein nicht exponierter CDP-Kanal und inkognitoartige BrowserContexts pro Session. Playwright bleibt als spätere Adapteroption; die Tool-Verträge werden deshalb unabhängig von chromedp definiert. Die Version wird auf v0.14.2 gepinnt, damit die bestehende Go-1.25-Baseline erhalten bleibt.

💭 **Agent progress** **Planning CDP network interception implementation** **Designing browser session and artifact handling** **Extending artifact read interface to browser executor** **Designing browser artifact handling and snapshot methods** **Defining safe click and wait strategies with concurrency handling** **Refining chromedp browser context handling** **Designing session lifecycle and memory limits** **Planning documentation in repo via ADR** **Planning ADR documentation approach** Die ADR entscheidet sich für `chromedp` als MVP: ein Go-Prozess, ein nicht exponierter CDP-Kanal und inkognitoartige BrowserContexts pro Session. Playwright bleibt als spätere Adapteroption; die Tool-Verträge werden deshalb unabhängig von `chromedp` definiert. Die Version wird auf `v0.14.2` gepinnt, damit die bestehende Go-1.25-Baseline erhalten bleibt.
Author
Owner

💭 Agent progress

Removing v15 dependencies and restoring v14

Running test environment after go mod tidy

💭 **Agent progress** **Removing v15 dependencies and restoring v14** **Running test environment after go mod tidy**
Author
Owner

💭 Agent progress

Committing and pushing ADR changes

Switching to direct exec_command usage

Requesting escalation for git add

💭 **Agent progress** **Committing and pushing ADR changes** **Switching to direct exec_command usage** **Requesting escalation for git add**
docs(browser): choose chromedp backend
All checks were successful
Go CI / Vet and test (push) Successful in 5m3s
Go CI / Vet and test (pull_request) Successful in 2m26s
beac581a8f
Author
Owner

💭 Agent progress

Implementing initial types and runner

💭 **Agent progress** **Implementing initial types and runner**
Author
Owner

💭 Agent progress

Adding missing context import

💭 **Agent progress** **Adding missing context import**
Author
Owner

💭 Agent progress

Planning chromedp integration

💭 **Agent progress** **Planning chromedp integration**
Author
Owner

💭 Agent progress

Planning explicit cdproto version downgrade

💭 **Agent progress** **Planning explicit cdproto version downgrade**
Author
Owner

💭 Agent progress

Planning chromedp screenshot implementation

Implementing URL policy and session error handling

Implementing session context with timeout and cleanup

Designing page snapshot and interaction handling

💭 **Agent progress** **Planning chromedp screenshot implementation** **Implementing URL policy and session error handling** **Implementing session context with timeout and cleanup** **Designing page snapshot and interaction handling**
Author
Owner

💭 Agent progress

Refactoring Response for byte chunks and EOF

💭 **Agent progress** **Refactoring Response for byte chunks and EOF**
Author
Owner

💭 Agent progress

Downgrading dependencies for compilation

💭 **Agent progress** **Downgrading dependencies for compilation**
Author
Owner

💭 Agent progress

Planning escalation rerun

💭 **Agent progress** **Planning escalation rerun**
Author
Owner

💭 Agent progress

Verifying Go version requirement

Planning test runner with fake Chromium

💭 **Agent progress** **Verifying Go version requirement** **Planning test runner with fake Chromium**
Author
Owner

💭 Agent progress

Modifying browser client interface for routing

💭 **Agent progress** **Modifying browser client interface for routing**
Author
Owner

💭 Agent progress

Verifying import order formatting

💭 **Agent progress** **Verifying import order formatting**
Author
Owner

💭 Agent progress

Defining browser interface and validating tool inputs

Adding browser artifact handler and route

💭 **Agent progress** **Defining browser interface and validating tool inputs** **Adding browser artifact handler and route**
Author
Owner

💭 Agent progress

Adding strict input handling for artifact routes

💭 **Agent progress** **Adding strict input handling for artifact routes**
Author
Owner

💭 Agent progress

Adding browser execution config and validation

Verifying cross-platform compilation

💭 **Agent progress** **Adding browser execution config and validation** **Verifying cross-platform compilation**
Author
Owner

💭 Agent progress

Verifying session lifetime and request limits

💭 **Agent progress** **Verifying session lifetime and request limits**
Author
Owner

💭 Agent progress

Adding separate BrowserArtifactBaseURL field

💭 **Agent progress** **Adding separate BrowserArtifactBaseURL field**
Author
Owner

💭 Agent progress

Reviewing browser timeout configuration

💭 **Agent progress** **Reviewing browser timeout configuration**
Author
Owner

💭 Agent progress

Planning unit tests for fake backend
Der Browservertrag ist nun durch den Tunnel geführt: browser wird nur nach erfolgreichem Capability-Handshake veröffentlicht, alle Operationen laufen auf dem privaten Host, und Tunnelverlust ruft synchron AbortSessions auf. Screenshots werden als kurzlebige, opaque Artefakte gestreamt; Seiteninhalt und Formulardaten bleiben aus Logs und Tunnel-Metadaten heraus.

Inspecting dynamic mocks in MCP tests

💭 **Agent progress** **Planning unit tests for fake backend** Der Browservertrag ist nun durch den Tunnel geführt: `browser` wird nur nach erfolgreichem Capability-Handshake veröffentlicht, alle Operationen laufen auf dem privaten Host, und Tunnelverlust ruft synchron `AbortSessions` auf. Screenshots werden als kurzlebige, opaque Artefakte gestreamt; Seiteninhalt und Formulardaten bleiben aus Logs und Tunnel-Metadaten heraus. **Inspecting dynamic mocks in MCP tests**
Author
Owner

💭 Agent progress

Adding browser executor stub and direct tests

Refactoring request policy and planning E2E tests

💭 **Agent progress** **Adding browser executor stub and direct tests** **Refactoring request policy and planning E2E tests**
Author
Owner

💭 Agent progress

Implementing browserexec tests with fake resolver

💭 **Agent progress** **Implementing browserexec tests with fake resolver**
Author
Owner

💭 Agent progress

Extending media source capabilities and refining tests

💭 **Agent progress** **Extending media source capabilities and refining tests**
Author
Owner

💭 Agent progress

Inspecting privateproxy routing tests

💭 **Agent progress** **Inspecting privateproxy routing tests**
Author
Owner

💭 Agent progress

Implementing fake browser with atomic counter

💭 **Agent progress** **Implementing fake browser with atomic counter**
Author
Owner

💭 Agent progress

Adding browser validation to config tests

💭 **Agent progress** **Adding browser validation to config tests**
Author
Owner

💭 Agent progress

Adding string import and append usage

💭 **Agent progress** **Adding string import and append usage**
Author
Owner

💭 Agent progress

Planning compile tests

💭 **Agent progress** **Planning compile tests**
Author
Owner

💭 Agent progress

Inspecting default max session lifetime discrepancy

💭 **Agent progress** **Inspecting default max session lifetime discrepancy**
Author
Owner

💭 Agent progress

Adjusting session lifetime conditions

💭 **Agent progress** **Adjusting session lifetime conditions**
Author
Owner

💭 Agent progress

Running browser-only tests without network

💭 **Agent progress** **Running browser-only tests without network**
Author
Owner

💭 Agent progress

Investigating unexpected URI type causing test failure

💭 **Agent progress** **Investigating unexpected URI type causing test failure**
Author
Owner

💭 Agent progress

Correcting media handler base change

💭 **Agent progress** **Correcting media handler base change**
Author
Owner

💭 Agent progress

Fixing flaky map iteration test

💭 **Agent progress** **Fixing flaky map iteration test**
Author
Owner

💭 Agent progress

Adding dynamic capability tests

💭 **Agent progress** **Adding dynamic capability tests**
Author
Owner

💭 Agent progress

Planning secure fetch interception policy

Designing local proxy for network enforcement

Implementing popup blocking via target monitoring

Refactoring browser context and target handling

💭 **Agent progress** **Planning secure fetch interception policy** **Designing local proxy for network enforcement** **Implementing popup blocking via target monitoring** **Refactoring browser context and target handling**
Author
Owner

💭 Agent progress

Identifying target struct

💭 **Agent progress** **Identifying target struct**
Author
Owner

💭 Agent progress

Adding listener with session locking

💭 **Agent progress** **Adding listener with session locking**
Author
Owner

💭 Agent progress

Adjusting timeout handling logic

💭 **Agent progress** **Adjusting timeout handling logic**
Author
Owner

💭 Agent progress

Inspecting media block removal effect

💭 **Agent progress** **Inspecting media block removal effect**
Author
Owner

💭 Agent progress

Confirming successful test compilation

💭 **Agent progress** **Confirming successful test compilation**
Author
Owner

💭 Agent progress

Configuring client write deadlines

💭 **Agent progress** **Configuring client write deadlines**
Author
Owner

💭 Agent progress

Committing backend and transport code

💭 **Agent progress** **Committing backend and transport code**
feat(browser): proxy isolated chromedp sessions
All checks were successful
Go CI / Vet and test (push) Successful in 1m1s
Go CI / Vet and test (pull_request) Successful in 1m1s
037a6132ec
Author
Owner

💭 Agent progress

Planning reproducible Chromium test setup

Evaluating Docker-based Chromium pinning
Der Kern ist als feat(browser) gepusht. Als letzten Teil ergänze ich jetzt den realen, opt-in Chromium-End-to-End-Test sowie Betreiber-Dokumentation für gepinnte Browser-Artefakte, Sandbox-/Containergrenzen, Limits und die gemeinsame SSRF-Policy.

💭 **Agent progress** **Planning reproducible Chromium test setup** **Evaluating Docker-based Chromium pinning** Der Kern ist als `feat(browser)` gepusht. Als letzten Teil ergänze ich jetzt den realen, opt-in Chromium-End-to-End-Test sowie Betreiber-Dokumentation für gepinnte Browser-Artefakte, Sandbox-/Containergrenzen, Limits und die gemeinsame SSRF-Policy.
Author
Owner

💭 Agent progress

Planning manifest checksum strategy

Drafting browser deployment docs and E2E test plan

Planning session ID verification tests

Assessing session management improvements

Handling root restriction in CI tests

💭 **Agent progress** **Planning manifest checksum strategy** **Drafting browser deployment docs and E2E test plan** **Planning session ID verification tests** **Assessing session management improvements** **Handling root restriction in CI tests**
Author
Owner

💭 Agent progress

Adding download behavior test

💭 **Agent progress** **Adding download behavior test**
Author
Owner

💭 Agent progress

Inspecting ClientSession naming conflict

💭 **Agent progress** **Inspecting ClientSession naming conflict**
Author
Owner

💭 Agent progress

Fixing channel blocking on request limit

💭 **Agent progress** **Fixing channel blocking on request limit**
Author
Owner

💭 Agent progress

Planning hard memory limits implementation

Assessing artifact delivery and authentication

Checking patch application failure

💭 **Agent progress** **Planning hard memory limits implementation** **Assessing artifact delivery and authentication** **Checking patch application failure**
Author
Owner

💭 Agent progress

Planning separate patch without protocol

💭 **Agent progress** **Planning separate patch without protocol**
Author
Owner

💭 Agent progress

Adding protocol capability section

💭 **Agent progress** **Adding protocol capability section**
Author
Owner

💭 Agent progress

Adding header and allowed tokens to protocol docs

💭 **Agent progress** **Adding header and allowed tokens to protocol docs**
Author
Owner

💭 Agent progress

Adding request header and payload note

💭 **Agent progress** **Adding request header and payload note**
Author
Owner

💭 Agent progress

Adding dynamic browser testing capabilities

Extending media test with browser stub

💭 **Agent progress** **Adding dynamic browser testing capabilities** **Extending media test with browser stub**
Author
Owner

💭 Agent progress

Identifying artifact cleanup security flaw

Planning artifact limits and cleanup config

💭 **Agent progress** **Identifying artifact cleanup security flaw** **Planning artifact limits and cleanup config**
Author
Owner

💭 Agent progress

Refactoring file write locking and handle generation

💭 **Agent progress** **Refactoring file write locking and handle generation**
Author
Owner

💭 Agent progress

Patching atomic lock

💭 **Agent progress** **Patching atomic lock**
Author
Owner

💭 Agent progress

Setting max artifacts limit in test config

Checking gofmt formatting

💭 **Agent progress** **Setting max artifacts limit in test config** **Checking gofmt formatting**
Author
Owner

💭 Agent progress

Fixing session initialization bug

Planning websocket blocking via Network API

💭 **Agent progress** **Fixing session initialization bug** **Planning websocket blocking via Network API**
Author
Owner

💭 Agent progress

Extending network blocking to WebSockets and data URLs

💭 **Agent progress** **Extending network blocking to WebSockets and data URLs**
Author
Owner

💭 Agent progress

Planning policy validation tests

Preparing full test run

Configuring environment for go mod tidy

💭 **Agent progress** **Planning policy validation tests** **Preparing full test run** **Configuring environment for go mod tidy**
Author
Owner

💭 Agent progress

Planning escalation network cache

💭 **Agent progress** **Planning escalation network cache**
Author
Owner

💭 Agent progress

Running full test suite

💭 **Agent progress** **Running full test suite**
Author
Owner

💭 Agent progress

Planning to run go vet and review diff
Die vollständige Testsuite ist grün. Der neue reale Browser-E2E-Test ist standardmäßig opt-in und prüft bei bereitgestelltem gepinntem Chromium JavaScript-Interaktion, Reverse-Tunnel-Quelladresse und Cookie-Isolation; die normalen Tests decken Capability-Lifecycle, Tunnelabbruch, Artefaktgrenzen sowie SSRF für Navigation, Redirects und Subresources ab.

💭 **Agent progress** **Planning to run go vet and review diff** Die vollständige Testsuite ist grün. Der neue reale Browser-E2E-Test ist standardmäßig opt-in und prüft bei bereitgestelltem gepinntem Chromium JavaScript-Interaktion, Reverse-Tunnel-Quelladresse und Cookie-Isolation; die normalen Tests decken Capability-Lifecycle, Tunnelabbruch, Artefaktgrenzen sowie SSRF für Navigation, Redirects und Subresources ab.
Author
Owner

💭 Agent progress

Adding MaxArtifacts docs note

Noticing line wrap issue

💭 **Agent progress** **Adding MaxArtifacts docs note** **Noticing line wrap issue**
Author
Owner

💭 Agent progress

Planning race condition tests for browser package

💭 **Agent progress** **Planning race condition tests for browser package**
test(browser): cover security and tunnel e2e
All checks were successful
Go CI / Vet and test (pull_request) Successful in 45s
Go CI / Vet and test (push) Successful in 45s
4ea1d534ed
Author
Owner

💭 Agent progress

Verifying Windows test compilation and CLI error handling

Analyzing SSRF risks with DNS and browser resolution

Planning exported DialContext method for proxy

Refactoring dial method and implementing local proxy setup

Designing local proxy lifecycle and request validation

Implementing exported DialContext with validation

Designing egressProxy with buffered tunneling

Implementing HTTP proxy request handling with streaming
Beim Abschlussreview ist eine DNS-Rebinding-Lücke zwischen CDP-Prüfung und Chromiums eigener DNS-Auflösung aufgefallen. Ich schließe sie noch vor dem finalen Commit mit einem ausschließlich loopback-gebundenen Egress-Proxy, der jede tatsächliche HTTP-/CONNECT-Verbindung über die aufgelösten, policy-geprüften IPs aufbaut; CDP bleibt die zusätzliche Request-Ebene.

💭 **Agent progress** **Verifying Windows test compilation and CLI error handling** **Analyzing SSRF risks with DNS and browser resolution** **Planning exported DialContext method for proxy** **Refactoring dial method and implementing local proxy setup** **Designing local proxy lifecycle and request validation** **Implementing exported DialContext with validation** **Designing egressProxy with buffered tunneling** **Implementing HTTP proxy request handling with streaming** Beim Abschlussreview ist eine DNS-Rebinding-Lücke zwischen CDP-Prüfung und Chromiums eigener DNS-Auflösung aufgefallen. Ich schließe sie noch vor dem finalen Commit mit einem ausschließlich loopback-gebundenen Egress-Proxy, der jede tatsächliche HTTP-/CONNECT-Verbindung über die aufgelösten, policy-geprüften IPs aufbaut; CDP bleibt die zusätzliche Request-Ebene.
Author
Owner

💭 Agent progress

Refining TCP connection handling

Patching TCP connection close behavior

💭 **Agent progress** **Refining TCP connection handling** **Patching TCP connection close behavior**
Author
Owner

💭 Agent progress

Implementing egress proxy and runner management

💭 **Agent progress** **Implementing egress proxy and runner management**
Author
Owner

💭 Agent progress

Adding nil guard for Close method

💭 **Agent progress** **Adding nil guard for Close method**
Author
Owner

💭 Agent progress

Planning DialContext policy tests

💭 **Agent progress** **Planning DialContext policy tests**
Author
Owner

💭 Agent progress

Planning proxy test implementation

Designing detailed proxy connection tests

💭 **Agent progress** **Planning proxy test implementation** **Designing detailed proxy connection tests**
Author
Owner

💭 Agent progress

Implementing loopback redirect server for testing

💭 **Agent progress** **Implementing loopback redirect server for testing**
Author
Owner

💭 Agent progress

Correcting http.Redirect usage

💭 **Agent progress** **Correcting http.Redirect usage**
Author
Owner

💭 Agent progress

Planning proxy authentication implementation

Enhancing proxy scheme validation

💭 **Agent progress** **Planning proxy authentication implementation** **Enhancing proxy scheme validation**
Author
Owner

💭 Agent progress

Updating ADR and docs for proxy enforcement

💭 **Agent progress** **Updating ADR and docs for proxy enforcement**
Author
Owner

💭 Agent progress

Running tests on new proxy

💭 **Agent progress** **Running tests on new proxy**
Author
Owner

💭 Agent progress

Noticing parallel test execution anomaly

💭 **Agent progress** **Noticing parallel test execution anomaly**
Author
Owner

💭 Agent progress

Updating test for correct 403 response

💭 **Agent progress** **Updating test for correct 403 response**
Author
Owner

💭 Agent progress

Planning egress proxy refactor and graceful shutdown

💭 **Agent progress** **Planning egress proxy refactor and graceful shutdown**
Author
Owner

💭 Agent progress

Adding HTTPS CONNECT proxy test

💭 **Agent progress** **Adding HTTPS CONNECT proxy test**
Author
Owner

💭 Agent progress

Commenting InsecureSkipVerify warning

💭 **Agent progress** **Commenting InsecureSkipVerify warning**
Author
Owner

💭 Agent progress

Planning final checks with go vet

💭 **Agent progress** **Planning final checks with go vet**
Author
Owner

💭 Agent progress

Preparing incremental commit by inspecting diffs

💭 **Agent progress** **Preparing incremental commit by inspecting diffs**
Author
Owner

💭 Agent progress

Assessing http.Transport CONNECT handling

Confirming dial uses IP not host

💭 **Agent progress** **Assessing http.Transport CONNECT handling** **Confirming dial uses IP not host**
fix(browser): pin policy-approved egress addresses
All checks were successful
Go CI / Vet and test (push) Successful in 3m10s
Go CI / Vet and test (pull_request) Successful in 3m10s
63384cd713
Author
Owner

💭 Agent progress

Reviewing branch cleanliness and commit status

💭 **Agent progress** **Reviewing branch cleanliness and commit status**
Author
Owner

🔍 Verifying implementation (attempt 1/3)

🔍 **Verifying implementation** (attempt 1/3)
Author
Owner

💭 Agent progress

Planning update completion

  • [completed] Repository, Richtlinien und bestehenden Private-Proxy-Fluss analysieren
  • [completed] ADR und Browser-Adapter/Capability-Grundlage implementieren, testen, committen und pushen
  • [completed] Browser-Tools, Isolation, Limits und Policy-Anbindung implementieren, testen, committen und pushen
  • [completed] End-to-End-/Sicherheitstests und Dokumentation ergänzen, Gesamtprüfung, committen und pushen

Preparing concise final PR comment with test summary

Änderungen

  • chromedp-Backend mit isolierten BrowserContexts und opaque Session-IDs
  • acht dynamische browser_*-MCP-Tools
  • Capability-Handshake und typisierte Tunneloperationen
  • SSRF-Schutz für Navigationen, Redirects und Subresources
  • policy-gepinnter Loopback-Egress-Proxy gegen DNS-Rebinding
  • harte Session-, Tab-, Laufzeit-, Aktions-, Snapshot- und Artefaktlimits
  • Downloads deaktiviert; Screenshots über kurzlebige Resource Links
  • ADR, Konfiguration und Betriebs-/Sandbox-Dokumentation
  • opt-in Chromium-E2E-Test für JavaScript-Interaktion, Quell-IP und Session-Isolation

Prüfung

  • go vet ./...
  • go test ./...
  • Race-Tests für Browser-, Tunnel- und Connector-Pfade
  • vier Commits erstellt und gepusht; Arbeitsbaum sauber
    Kurzfassung: Browser Use läuft ausschließlich auf dem privaten Proxy, wird dynamisch angeboten und ist durch Session-Isolation, Netzwerk-Policy, gepinnte Egress-Adressen und Ressourcenlimits abgesichert.

Planning short PR with inspection
Ich prüfe Branch, Tests und die Abdeckung der Akzeptanzkriterien; fehlende, klar abgrenzbare Punkte ergänze ich mit separaten Commits.

💭 **Agent progress** **Planning update completion** - [completed] Repository, Richtlinien und bestehenden Private-Proxy-Fluss analysieren - [completed] ADR und Browser-Adapter/Capability-Grundlage implementieren, testen, committen und pushen - [completed] Browser-Tools, Isolation, Limits und Policy-Anbindung implementieren, testen, committen und pushen - [completed] End-to-End-/Sicherheitstests und Dokumentation ergänzen, Gesamtprüfung, committen und pushen **Preparing concise final PR comment with test summary** ## Änderungen - chromedp-Backend mit isolierten BrowserContexts und opaque Session-IDs - acht dynamische `browser_*`-MCP-Tools - Capability-Handshake und typisierte Tunneloperationen - SSRF-Schutz für Navigationen, Redirects und Subresources - policy-gepinnter Loopback-Egress-Proxy gegen DNS-Rebinding - harte Session-, Tab-, Laufzeit-, Aktions-, Snapshot- und Artefaktlimits - Downloads deaktiviert; Screenshots über kurzlebige Resource Links - ADR, Konfiguration und Betriebs-/Sandbox-Dokumentation - opt-in Chromium-E2E-Test für JavaScript-Interaktion, Quell-IP und Session-Isolation ## Prüfung - `go vet ./...` - `go test ./...` - Race-Tests für Browser-, Tunnel- und Connector-Pfade - vier Commits erstellt und gepusht; Arbeitsbaum sauber Kurzfassung: Browser Use läuft ausschließlich auf dem privaten Proxy, wird dynamisch angeboten und ist durch Session-Isolation, Netzwerk-Policy, gepinnte Egress-Adressen und Ressourcenlimits abgesichert. **Planning short PR with inspection** Ich prüfe Branch, Tests und die Abdeckung der Akzeptanzkriterien; fehlende, klar abgrenzbare Punkte ergänze ich mit separaten Commits.
Author
Owner

💭 Agent progress

Reviewing code and test documentation configuration

Planning rerun with GOCACHE tmp
Die Tests benötigen einen isolierten Go-Cache, weil der globale Build-Cache außerhalb des Worktrees nicht lesbar ist; danach gleiche ich Implementierung und Sicherheitsgrenzen gegen die Issue ab.

💭 **Agent progress** **Reviewing code and test documentation configuration** **Planning rerun with GOCACHE tmp** Die Tests benötigen einen isolierten Go-Cache, weil der globale Build-Cache außerhalb des Worktrees nicht lesbar ist; danach gleiche ich Implementierung und Sicherheitsgrenzen gegen die Issue ab.
Author
Owner

💭 Agent progress

Planning file examination

💭 **Agent progress** **Planning file examination**
Author
Owner

💭 Agent progress

Inspecting private proxy configuration

💭 **Agent progress** **Inspecting private proxy configuration**
Author
Owner

💭 Agent progress

Analyzing browser proxy network behavior

Reviewing ADR documentation method
Die Umsetzung deckt Backend-Abstraktion, Capability-Handshake, isolierte Kontexte, Artefaktlimits und Tunnel-Abbruch bereits ab. Ich führe die Suite nun außerhalb der Netzwerk-Sandbox aus, da mehrere E2E-/SSRF-Tests lokale Listener benötigen.

💭 **Agent progress** **Analyzing browser proxy network behavior** **Reviewing ADR documentation method** Die Umsetzung deckt Backend-Abstraktion, Capability-Handshake, isolierte Kontexte, Artefaktlimits und Tunnel-Abbruch bereits ab. Ich führe die Suite nun außerhalb der Netzwerk-Sandbox aus, da mehrere E2E-/SSRF-Tests lokale Listener benötigen.
Author
Owner

💭 Agent progress

Verifying git status and branch remote

💭 **Agent progress** **Verifying git status and branch remote**
Author
Owner

💭 Agent progress

Planning comprehensive TODO search

💭 **Agent progress** **Planning comprehensive TODO search**
Author
Owner

💭 Agent progress

Assessing E2E test environment limitations

💭 **Agent progress** **Assessing E2E test environment limitations**
Author
Owner

💭 Agent progress

Preparing for approved git push
Keine offenen TODOs oder uncommitteten Änderungen gefunden. Die vollständige Suite ist grün; der reale Chromium-E2E-Test ist vorhanden, kann in dieser Umgebung aber ohne installiertes Chromium nicht gestartet werden. Ich pushe die vier thematischen Browser-Commits.

💭 **Agent progress** **Preparing for approved git push** Keine offenen TODOs oder uncommitteten Änderungen gefunden. Die vollständige Suite ist grün; der reale Chromium-E2E-Test ist vorhanden, kann in dieser Umgebung aber ohne installiertes Chromium nicht gestartet werden. Ich pushe die vier thematischen Browser-Commits.
Author
Owner

Verify OK — agent reported Alles Implementiert

✅ **Verify OK** — agent reported Alles Implementiert
frank changed title from WIP: #21 Browser Use über den privaten Reverse Proxy anbieten to fix: #21 Browser Use über den privaten Reverse Proxy anbieten 2026-07-17 15:43:15 +02:00
Author
Owner

forge agent finished implementation

  • Commit: fix(browser): pin policy-approved egress addresses
  • Pull request: #32
  • Next: waiting for CI / babysitting fixes if needed
docs/adr/0001-browser-backend.md   |   7 +-
 docs/browser-tools.md              |   4 +
 internal/browserexec/proxy.go      | 178 +++++++++++++++++++++++++++++++++++++
 internal/browserexec/proxy_test.go | 136 ++++++++++++++++++++++++++++
 internal/browserexec/runner.go     |  15 +++-
 internal/httpexec/policy.go        |  22 +++++
 6 files changed, 359 insertions(+), 3 deletions(-)
Agent output (tail)
- acht dynamische `browser_*`-MCP-Tools
- Capability-Handshake und typisierte Tunneloperationen
- SSRF-Schutz für Navigationen, Redirects und Subresources
- policy-gepinnter Loopback-Egress-Proxy gegen DNS-Rebinding
- harte Session-, Tab-, Laufzeit-, Aktions-, Snapshot- und Artefaktlimits
- Downloads deaktiviert; Screenshots über kurzlebige Resource Links
- ADR, Konfiguration und Betriebs-/Sandbox-Dokumentation
- opt-in Chromium-E2E-Test für JavaScript-Interaktion, Quell-IP und Session-Isolation
## Prüfung
- `go vet ./...`
- `go test ./...`
- Race-Tests für Browser-, Tunnel- und Connector-Pfade
- vier Commits erstellt und gepusht; Arbeitsbaum sauber
Kurzfassung: Browser Use läuft ausschließlich auf dem privaten Proxy, wird dynamisch angeboten und ist durch Session-Isolation, Netzwerk-Policy, gepinnte Egress-Adressen und Ressourcenlimits abgesichert.
Ich prüfe Branch, Tests und die Abdeckung der Akzeptanzkriterien; fehlende, klar abgrenzbare Punkte ergänze ich mit separaten Commits.Die Tests benötigen einen isolierten Go-Cache, weil der globale Build-Cache außerhalb des Worktrees nicht lesbar ist; danach gleiche ich Implementierung und Sicherheitsgrenzen gegen die Issue ab.Die Umsetzung deckt Backend-Abstraktion, Capability-Handshake, isolierte Kontexte, Artefaktlimits und Tunnel-Abbruch bereits ab. Ich führe die Suite nun außerhalb der Netzwerk-Sandbox aus, da mehrere E2E-/SSRF-Tests lokale Listener benötigen.Keine offenen TODOs oder uncommitteten Änderungen gefunden. Die vollständige Suite ist grün; der reale Chromium-E2E-Test ist vorhanden, kann in dieser Umgebung aber ohne installiertes Chromium nicht gestartet werden. Ich pushe die vier thematischen Browser-Commits.PR_TITLE: feat(browser): provide isolated Chromium sessions through private proxy
PR_BODY:
- chromedp backend, capability handshake, MCP tools, session isolation, policy-enforced egress and artifact limits are implemented.
- ADR, operator documentation, SSRF coverage and real Chromium E2E test are included.
- Verified: `go test ./...` passes.
Alles Implementiert
✅ **forge agent finished implementation** - Commit: `fix(browser): pin policy-approved egress addresses` - Pull request: https://repository.hildebrandt.io/ai-tools/private-proxy-mcp/pulls/32 - Next: waiting for CI / babysitting fixes if needed ``` docs/adr/0001-browser-backend.md | 7 +- docs/browser-tools.md | 4 + internal/browserexec/proxy.go | 178 +++++++++++++++++++++++++++++++++++++ internal/browserexec/proxy_test.go | 136 ++++++++++++++++++++++++++++ internal/browserexec/runner.go | 15 +++- internal/httpexec/policy.go | 22 +++++ 6 files changed, 359 insertions(+), 3 deletions(-) ``` <details><summary>Agent output (tail)</summary> ``` - acht dynamische `browser_*`-MCP-Tools - Capability-Handshake und typisierte Tunneloperationen - SSRF-Schutz für Navigationen, Redirects und Subresources - policy-gepinnter Loopback-Egress-Proxy gegen DNS-Rebinding - harte Session-, Tab-, Laufzeit-, Aktions-, Snapshot- und Artefaktlimits - Downloads deaktiviert; Screenshots über kurzlebige Resource Links - ADR, Konfiguration und Betriebs-/Sandbox-Dokumentation - opt-in Chromium-E2E-Test für JavaScript-Interaktion, Quell-IP und Session-Isolation ## Prüfung - `go vet ./...` - `go test ./...` - Race-Tests für Browser-, Tunnel- und Connector-Pfade - vier Commits erstellt und gepusht; Arbeitsbaum sauber Kurzfassung: Browser Use läuft ausschließlich auf dem privaten Proxy, wird dynamisch angeboten und ist durch Session-Isolation, Netzwerk-Policy, gepinnte Egress-Adressen und Ressourcenlimits abgesichert. Ich prüfe Branch, Tests und die Abdeckung der Akzeptanzkriterien; fehlende, klar abgrenzbare Punkte ergänze ich mit separaten Commits.Die Tests benötigen einen isolierten Go-Cache, weil der globale Build-Cache außerhalb des Worktrees nicht lesbar ist; danach gleiche ich Implementierung und Sicherheitsgrenzen gegen die Issue ab.Die Umsetzung deckt Backend-Abstraktion, Capability-Handshake, isolierte Kontexte, Artefaktlimits und Tunnel-Abbruch bereits ab. Ich führe die Suite nun außerhalb der Netzwerk-Sandbox aus, da mehrere E2E-/SSRF-Tests lokale Listener benötigen.Keine offenen TODOs oder uncommitteten Änderungen gefunden. Die vollständige Suite ist grün; der reale Chromium-E2E-Test ist vorhanden, kann in dieser Umgebung aber ohne installiertes Chromium nicht gestartet werden. Ich pushe die vier thematischen Browser-Commits.PR_TITLE: feat(browser): provide isolated Chromium sessions through private proxy PR_BODY: - chromedp backend, capability handshake, MCP tools, session isolation, policy-enforced egress and artifact limits are implemented. - ADR, operator documentation, SSRF coverage and real Chromium E2E test are included. - Verified: `go test ./...` passes. Alles Implementiert ``` </details>
Author
Owner
🟢 **CI green** (attempt 1/3) https://repository.hildebrandt.io/ai-tools/private-proxy-mcp/actions/runs/33
Author
Owner

📊 Agent usage (codex / ACP)

In tokens 1 486 (cached read 241 152)
Out tokens 508 (thought 173)
Limits context 63 123 / 258 400 · quota ok
Runtime 35m 11s
📊 **Agent usage** (`codex` / ACP) | | | | --- | --- | | In tokens | 1 486 (cached read 241 152) | | Out tokens | 508 (thought 173) | | Limits | context 63 123 / 258 400 · quota ok | | Runtime | 35m 11s |
Author
Owner

💭 Agent progress

Confirming full implementation with exact PR details

  • chromedp backend, capability handshake, MCP tools, session isolation, policy-enforced egress and artifact limits are implemented.
  • ADR, operator documentation, SSRF coverage and real Chromium E2E test are included.
  • Verified: go test ./... passes.
💭 **Agent progress** **Confirming full implementation with exact PR details** - chromedp backend, capability handshake, MCP tools, session isolation, policy-enforced egress and artifact limits are implemented. - ADR, operator documentation, SSRF coverage and real Chromium E2E test are included. - Verified: `go test ./...` passes.
frank merged commit 058b3bc49a into main 2026-07-17 15:45:59 +02:00
frank deleted branch agent/issue-21-browser-use-über-den-privaten-reverse-p 2026-07-17 15:46:01 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ai-tools/private-proxy-mcp!32
No description provided.