# How to connect Google Drive to Hermes Agent (no API keys)

> Connect Google Drive to Hermes Agent with no Google Cloud project, no OAuth client, and no credentials JSON. Hosted OAuth, 76 Drive tools, and fixes for the Drive API errors agents actually hit.

Web version: https://claw-link.dev/hermes/google-drive

Most guides for giving Hermes Agent Google Drive access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Google Drive setup: pair once in the browser and your always-on Hermes agent can act on Google Drive for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

**Start here — paste this into Hermes to set up ClawLink:**

> Set up ClawLink for Hermes and tell me when it's ready.
> 1. Install the plugin: `hermes plugins install ClawLink-HQ/hermes-plugin --enable`
> 2. Start pairing with `hermes clawlink begin`. It prints an approval link, so show me the link and stop, don't wait.
> 3. I'll approve it in my browser, then reply "approved".
> 4. When I say approved, finish setup: `hermes clawlink finish`
> 5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

## Setup

It takes three steps to connect Hermes to Google Drive.

1. **Install ClawLink** — add the plugin to Hermes Agent once.
2. **Connect Google Drive** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask Hermes Agent in plain English.

**Alternative for any agent (no plugin needed):** if the Hermes Agent plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect google-drive  # connect Google Drive (browser OAuth)
npx -y @useclawlink/cli actions google-drive  # list available actions
npx -y @useclawlink/cli run google-drive <action> --input '<json>'  # execute (add --confirm for writes)
```

The whole pairing handshake, start to finish. Run these once, then connect Google Drive in the dashboard:

```bash
hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin     # approve the link in your browser
hermes clawlink finish
hermes clawlink test
```

`hermes clawlink test` is the one that tells you pairing actually worked. If it fails, run `hermes clawlink begin` again for a fresh link: approval links expire. Start a new chat after connecting so Hermes reloads its tool catalog.

### Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once Google Drive is connected in the dashboard, that agent calls the same 76 Google Drive tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## Google Drive MCP for Hermes

Looking for a Google Drive MCP server for Hermes Agent? ClawLink connects Google Drive to Hermes Agent and exposes 76 Google Drive tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using OpenClaw instead? The [OpenClaw Google Drive integration](https://claw-link.dev/openclaw/google-drive) runs on the same hosted Google provider and the same 76 tools; OpenClaw installs ClawLink through a ClawHub skill instead of the Hermes pairing commands.

The manual route to this integration asks you to create a Google Cloud project, enable the Drive API, mint a Desktop-type OAuth client, and point a setup script at the downloaded client-secret JSON. The gateway route asks you to hand-edit `~/.hermes/config.yaml` with a copied API key. ClawLink's route is the four pairing commands below and one Connect click, because the verified Google OAuth app is ours to run: you approve Google's consent screen and the 76 tools work from the next message, with no credential file on the machine running Hermes.

## What the Hermes Agent Google Drive integration can do

76 Google Drive tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 76.

### 30 of 76 Google Drive tools for Hermes

| Tool | What it does |
|---|---|
| **Copy file advanced** `googledrive_copy_file_advanced` | Copy a file with advanced options |
| **Create comment** `googledrive_create_comment` | Create a comment on a Drive file |
| **Create drive** `googledrive_create_drive` | Create a new shared drive |
| **Create file** `googledrive_create_file` | Create a new file or folder with metadata |
| **Create file from text** `googledrive_create_file_from_text` | Create a Drive file from text content |
| **Create folder** `googledrive_create_folder` | Create a new folder in Google Drive |
| **Create permission** `googledrive_create_permission` | Share a file or folder with users or make it public |
| **Create reply** `googledrive_create_reply` | Reply to a comment on a Drive file |
| **Create shortcut to file** `googledrive_create_shortcut_to_file` | Create a shortcut to an existing Drive item |
| **Download file** `googledrive_download_file` | Download a file from Google Drive |
| **Edit file** `googledrive_edit_file` | Update a Drive file's content (non-Google Workspace) |
| **Export google workspace file** `googledrive_export_google_workspace_file` | Export a Google Workspace doc to a specific format |
| **Find file** `googledrive_find_file` | Search for files in Google Drive by name, MIME type, or query |
| **Find folder** `googledrive_find_folder` | Find a folder in Google Drive by name |
| **Get about** `googledrive_get_about` | Get user, Drive, and storage quota info |
| **Get drive** `googledrive_get_drive` | Get a shared drive by ID |
| **Get file metadata** `googledrive_get_file_metadata` | Get a file's metadata by ID |
| **List comments** `googledrive_list_comments` | List comments on a Google Drive file |
| **List permissions** `googledrive_list_permissions` | List a file's sharing permissions |
| **List replies** `googledrive_list_replies` | List replies to a comment |
| **List revisions** `googledrive_list_revisions` | List a file's revision history |
| **List shared drives** `googledrive_list_shared_drives` | List the user's shared drives |
| **Move file** `googledrive_move_file` | Move a file to a different folder |
| **Update file put** `googledrive_update_file_put` | Update file metadata like name, description, or parents |
| **Upload file** `googledrive_upload_file` | Upload a file to Google Drive |
| **Upload from URL** `googledrive_upload_from_url` | Fetch a URL and upload it to Google Drive |
| **Download file operation** `googledrive_download_file_operation` | Download file content using long-running operations |
| **Generate IDS** `googledrive_generate_ids` | Generates a set of file IDs which can be provided in create or copy requests |
| **Get app** `googledrive_get_app` | Get information about a specific Drive app by ID |
| **Get changes start page token** `googledrive_get_changes_start_page_token` | Get the starting pageToken for listing future changes in Google Drive |

## Example prompts

**Find and read**

> Find the PDF in my Google Drive whose name contains proposal, download it, and give me a one-paragraph summary plus any deadlines it mentions.

**Organize a folder**

> List everything in my Invoices folder, then move any file whose name starts with 2025 into the Archive folder, pausing between moves so we stay inside Drive's rate limits.

**Create a doc from chat**

> Create a file in my Drive called Meeting notes 2026-08-02 from the text I paste next, and share the link back to me.

**Recover from a missing id**

> If a Drive call fails saying fileId is required, run googledrive_find_file with a name query first and retry the call with the real id from the results instead of asking me.

## What the Google Drive tools actually expect

The argument rules behind the Drive failures we log in production, not a restatement of Google's docs.

- **Every file operation wants the file ID.** `arguments.fileId is required` leads our Drive failure log, 62 rows. The id lives in the file's URL and in every `googledrive_find_file` result; one search call first ends the problem.
- **`googledrive_find_file` takes Drive query syntax in `q`** (`name contains 'report' and mimeType = 'application/pdf'`), and a malformed expression earns Google's bare 400 `Invalid Value` with no field named. Simplify to one clause, confirm rows, then rebuild.
- **`googledrive_list_children_v2` lists a folder; `googledrive_find_file` searches.** The invented names agents reach for (`search_files`, `list_files`, `list_folder`) fail with a not-found error that suggests the real tools; take the suggestion.
- **Uploads cap at 5 MB and need reachable bytes.** A local path in `s3key` fails with `s3key must be a PUBLIC https:// URL`; the hosted runtime cannot read the agent machine's disk. Attach the file in chat, host it at a plain HTTPS URL, or use `googledrive_create_file_from_text` for text.
- **Docs, Sheets and Slides export; everything else downloads.** `googledrive_export_google_workspace_file` rejects regular files with a 400 pointing you at `googledrive_download_file`.
- **`googledrive_copy_file_advanced` pauses for explicit confirmation.** That is the write guard working; the agent should surface the question, not retry.
- **File-by-file loops hit Drive's per-minute limits.** Our 429 rows (`Too many requests. Try again shortly.`) are almost all bulk move and download loops. Pace the loop, wait, retry; reconnecting has no effect on rate limits.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Google Drive working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Connection flow** | Register a Google Drive app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect Google Drive through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for Google Drive. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right Google Drive actions to the runtime in a format your agent can reliably use. | 76 tools for Google Drive are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes Google Drive to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Google Drive in the browser, and the 76 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### Hermes paired but still can't use Google Drive
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

### Connection succeeds but no tools appear
Reconnect Google Drive from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling Google Drive tools
Google Drive tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Google Drive call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### Google Drive returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### "Request had insufficient authentication scopes" (403) from Google Drive
This is about the OAuth grant, not the file, and the giveaway is the word scope. The connection's Google grant is missing the Drive permission ClawLink requests, either because the consent checkbox was unticked or because the grant predates the current permission set. In our logs it lands on `googledrive_find_file` and `googledrive_find_folder` first. Deleting a local `token.json` is the standard internet advice and there is no such file in a hosted flow; the actual fix is to reconnect Google Drive from the ClawLink dashboard and approve the Drive permission this time.

### "arguments.fileId is required" from Google Drive
Hermes described a file by name where the tool needed its id. Have it run `googledrive_find_file` with a `name contains` query and reuse the id from the results, or paste the file's URL into chat, which carries the id inside it. This is the single most common Drive failure we log and the fix never varies.

### 400 "Invalid Value" from googledrive_find_file
The `q` expression or an `orderBy` value did not parse, and Google names no field in this error. Ask the agent to retry with only `name contains '\<word>'`, verify results arrive, then add the mimeType or date conditions back one at a time. The broken clause identifies itself within a call or two.

### "s3key must be a PUBLIC https:// URL" when uploading to Google Drive
A local file path reached the hosted runtime, which cannot read the machine Hermes runs on. Give the agent a public HTTPS link to the file, or paste the content and use `googledrive_create_file_from_text`. Uploads through this tool cap at 5 MB either way.

### "Connected account is not in an ACTIVE state" (INITIALIZING or REVOKED) from Google Drive
`INITIALIZING` means consent never completed; finish the OAuth flow in one browser session. `REVOKED` means the grant was withdrawn in the Google account afterwards. Either way, reconnect Google Drive from the ClawLink dashboard, approve the consent screen, and start a fresh chat so Hermes reloads the connection.

### OAuth finished in the browser but the account is still missing
Try reconnecting Google Drive and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

### Is there a Hermes Agent Google Drive integration?
Yes. ClawLink is the fastest way to connect Hermes to Google Drive: link your Google Drive account once in the browser and Hermes Agent can call the Google Drive API through 76 ready-made tools — no custom code or token handling.

### How do I connect Google Drive to Hermes with ClawLink?
Install the plugin with `hermes plugins install ClawLink-HQ/hermes-plugin --enable`, then pair once: run `hermes clawlink begin`, approve the link in your browser, and run `hermes clawlink finish`. Connect Google Drive in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

### How long does it take to connect Google Drive to Hermes Agent?
About two minutes. Sign in, click Connect next to Google Drive in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

### Why use ClawLink instead of wiring Google Drive up myself?
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Google Drive working from chat.

### Do I need my own Google Cloud project or OAuth app to give Hermes access to Drive?
No. The Cloud project, the API you enable, the Desktop OAuth client, the client-secret JSON: that inventory exists so that someone owns a Google OAuth app, and with ClawLink that someone is us. You pair Hermes with the four commands above, click Connect, and approve on Google's own consent screen. Nothing gets created in a Cloud Console and nothing gets downloaded.

### Can Hermes use Google Drive without an API key?
Yes, because API keys were never the mechanism for private data in the first place: Google scopes them to public information only. Every real Drive integration is OAuth underneath, and the differences are about who runs the OAuth app and where the token lives. Here ClawLink runs the app and holds the token, so the no-API-key promise in this page's title is a statement about architecture, not a workaround.

### What can ClawLink actually do in my Drive, and how do I take it back?
The grant is Google's full `drive` scope, read and write to what your account can see; 76 tools including upload, move and delete need exactly that, and pretending otherwise would be false comfort. We verified the scope string on a live connection. Your controls: Google's consent screen states the grant before it exists, sensitive operations pause for confirmation before running, revocation is immediate from Third-party apps and services in your Google account or by deleting the connection in the dashboard, and ClawLink deletes tool execution logs after 90 days. The strongest option remains connecting a Google account that only holds what the agent should touch.

### Hermes paired but still can't use Google Drive
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

## Related

- [Connect Google Classroom](https://claw-link.dev/hermes/google-classroom) — Manage classes, coursework, and students
- [Google Calendar](https://claw-link.dev/hermes/google-calendar) — Create and manage calendar events
- [Hermes Google Sheets integration](https://claw-link.dev/hermes/google-sheets) — Read and write spreadsheet data
