---
name: Gmail Watch
slug: gmail-watch
category: Automation
description: Gmail Watch monitors a Gmail inbox for new messages and streams them as NDJSON, with optional Pub/Sub setup and label filtering. Use it when you need an agent to react to incoming email in real time.
github: "https://github.com/googleworkspace/cli/tree/main/skills/gws-gmail-watch"
language: Rust
stars: 30381
forks: 1779
install: "npx degit https://github.com/googleworkspace/cli/tree/main/skills/gws-gmail-watch ~/.claude/skills/gws-gmail-watch"
installs_to: ~/.claude/skills/gws-gmail-watch
source_path: skills/gws-gmail-watch/SKILL.md
collection_size: 25
category_size: 1523
collection_url: "https://dirskills.com/collections/googleworkspace/cli"
added: 2026-08-14T07:11:38.701Z
last_synced: 2026-08-14T07:11:38.701Z
canonical_url: "https://dirskills.com/skills/gmail-watch"
---

# Gmail Watch

Gmail Watch monitors a Gmail inbox for new messages and streams them as NDJSON, with optional Pub/Sub setup and label filtering. Use it when you need an agent to react to incoming email in real time.

**Install:**

```bash
npx degit https://github.com/googleworkspace/cli/tree/main/skills/gws-gmail-watch ~/.claude/skills/gws-gmail-watch
```

## README

# gmail +watch

> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it.

Watch for new emails and stream them as NDJSON

## Usage

```bash
gws gmail +watch
```

## Flags

| Flag | Required | Default | Description |
|------|----------|---------|-------------|
| `--project` | — | — | GCP project ID for Pub/Sub resources |
| `--subscription` | — | — | Existing Pub/Sub subscription name (skip setup) |
| `--topic` | — | — | Existing Pub/Sub topic with Gmail push permission already granted |
| `--label-ids` | — | — | Comma-separated Gmail label IDs to filter (e.g., INBOX,UNREAD) |
| `--max-messages` | — | 10 | Max messages per pull batch |
| `--poll-interval` | — | 5 | Seconds between pulls |
| `--msg-format` | — | full | Gmail message format: full, metadata, minimal, raw |
| `--once` | — | — | Pull once and exit |
| `--cleanup` | — | — | Delete created Pub/Sub resources on exit |
| `--output-dir` | — | — | Write each message to a separate JSON file in this directory |

## Examples

```bash
gws gmail +watch --project my-gcp-project
gws gmail +watch --project my-project --label-ids INBOX --once
gws gmail +watch --subscription projects/p/subscriptions/my-sub
gws gmail +watch --project my-project --cleanup --output-dir ./emails
```

## Tips

- Gmail watch expires after 7 days — re-run to renew.
- Without --cleanup, Pub/Sub resources persist for reconnection.
- Press Ctrl-C to stop gracefully.

## See Also

- [gws-shared](../gws-shared/SKILL.md) — Global flags and auth
- [gws-gmail](../gws-gmail/SKILL.md) — All send, read, and manage email commands
