Repository navigation
Conversation
JustMaris
reviewed
Oct 13, 2026
JustMaris
left a comment
Member
There was a problem hiding this comment.
Thanks. The prepare -> approve -> begin flow, config digest check and action journal are well thought out. Not merging for now. Main concerns:
- Approval can't be verified by the server.
begin_batchis only gated by the MCP client's prompt, so an auto-approving client (or a prompt-injected page/email) can start a batch. Please move approval out of band:prepare_batchstores the preview and digest inhistory.db, the localhost web UI shows it with an Approve button (CSRF-protected), andbegin_batchonly succeeds with a single-use, expiring approval for that digest. This doesn't stop a malicious local agent running as the user, but it does stop prompt injection. - Human vs MCP attribution. Please record an
actor(human/mcp, plus client name) on journal entries, completed tasks and request/pipeline updates, and show it on the Tasks page and in export, instead of the free-text "MCP:" note prefix. - Domain scope.
BrokerDomainsallows all subdomains of the broker'swebsiteandopt_out_urlhosts. About 44 entries indata/brokers.yamlpoint at shared portal/form platforms, so a whole platform (and any tenant on it) becomes an allowed destination for profile data. Please allow the exact host for those, with subdomains opt-in. - DNS check is TOCTOU.
URLPolicy.Validateresolves in Go but Chrome resolves separately. Consider also checking the remote IP Chrome reports. - Pipeline status can go backwards.
UpdatePipelineStatus(..., AwaitingResponse)after a form accept would overwriteconfirmed(and, after #158, the no-data status). Only advance from earlier stages. - Receipt detection trusts agent-quoted text from an untrusted page plus an English regex. Worth documenting as a known limit.
- Dependencies/CLI surface. The MCP SDK adds several indirect modules, and
eraser mcpjoins the 1.x CLI contract in docs/stability.md. Is that intended, or should it be marked experimental? - Docs. The
learn.chatgpt.com/docs/extend/mcplink looks wrong; please verify. Adddocs/mcp.mdto the Docs Map in CLAUDE.md. Please confirm CI installs Chrome so the browser tests aren't silently skipped.
Also expect a rebase after #158 (overlap in history.go, inbox/scan.go, web/handlers_pages.go).
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pending removal requests often lead to forms and confirmation links that users still have to handle by hand. This adds
eraser mcp, a local connection that lets Codex work through those follow-ups after the user reviews and approves a specific batch.How it works
For example, a form showing “Your request has been received” completes the follow-up task. A CAPTCHA pauses for the user, and a rejected or uncertain submission stays open for review. An accepted request does not mean the broker has erased the data.
What is included
Limits to keep in mind
The MCP client must prompt for
begin_batchandretry_action; the example configuration includes those settings. The server enforces the approved profile, tasks, and destinations.Form automation uses Chrome/Chromium. CAPTCHA, login, identity checks, and unexpected destinations require human intervention. Embedded forms and third-party dependencies may also need manual handling.
Validation
go vet ./...,go test -race ./..., formatting, andgolangci-lint runpassed.eraser_demo: access was blocked before approval; the simple form, multiple-step form, and confirmation link completed; human verification paused; the rejected request remained unresolved without a retry. The saved results matched the Tasks page viewed in the Codex browser.The manual demo used fictional data and did not contact real brokers or send real email.