Skip to content

Google Drive is unvalidated at the last hop #132

Description

@davidmckayv

Raised from the pre-release validation pass. Nothing has ever come back from Google Drive. Everything OpenBot owns on that path is verified; the hop from OpenBot to Google has never run.

This is not a defect report. It is a gap in evidence, filed so the release notes do not claim more than has been tested.

What is verified

A Bot calls the tool, and the whole chain up to Google works and is on the trail:

{
  "bot": "risk-analyst",   "tool": "search_files",
  "server": "google-drive", "effect": "read",
  "actor":     "AqarPaoMdN0KXTpLJaObzBNey7KDNaJE",
  "reachedAs": "AqarPaoMdN0KXTpLJaObzBNey7KDNaJE",
  "decision": { "mode": "enforce", "rule": "true", "allowed": true, "carriedOut": true },
  "failure": "You have not connected your Google Drive account. Connect it in Settings and ask again."
}
  • the Bot authenticates its callback
  • the grant is checked
  • the boundary is evaluated
  • mcp.call_failed is written
  • a per-person credential is resolved, and reachedAs equals the asking user, which is the whole point of the design
  • effect: read is the read/write classification
  • the refusal names a cause somebody can act on

The surfaces are right too: /admin/plugins/google-drive enables, shows the exact redirect URI built from OPENBOT_PUBLIC_URL, lists the four read tools, and /settings/connected-accounts/google-drive refuses with "Google Drive has no OAuth client registered yet. An administrator has to add one first."

What is not verified

  • a real consent flow completing
  • a real search_files / list_recent_files call returning real files
  • returned filenames checked against the audit row, so the answer is known to have come from Google rather than from the model

Why it stopped there

Registering the OAuth client needs a Google Cloud account, and per docs/plugins/google-drive.md it is more than pasting a secret:

  • enrolment in the Developer Preview Program, which the doc calls "the step with the least evidence that it is missing" — without it everything else can be correct and still return The caller does not have permission
  • both drive.googleapis.com and drivemcp.googleapis.com enabled; the connector talks to the second
  • consent screen carrying drive.readonly, with each person listed as a test user while the app is in Testing
  • a Web application client whose redirect URI matches character for character

The GOOGLE_OAUTH_* values in .env are a sign-in client and cannot serve: different callback path, and none of the above. Sign-in itself is separately verified and works.

The browser route is not a substitute. Google refuses sign-in from headless browsers, and a Bot holding somebody's Google session in its own profile is exactly the second copy of their access that this connector exists to avoid.

To close this

  1. Register the client per the doc.
  2. /admin/plugins/google-drive → paste the client, Refresh tools.
  3. /settings/connected-accounts/google-driveConnect, complete consent.
  4. Ask a Bot to search Drive.
  5. Check the returned filenames against the mcp.call_succeeded row, and confirm a second person asking the same question gets their own answer.

Step 5 is the one that matters. A list of files in the transcript is not evidence on its own.

Until then

Release notes should not say Drive works. What can be said is that the connector is wired, governed, per-person and audited up to the vendor call, and that the vendor call is untested.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions