{"skill":{"slug":"clawback-sh","displayName":"Clawback","summary":"Gmail security proxy with policy enforcement, approval workflows, and audit logging. Use when the user wants to read, search, or send Gmail with guardrails —...","description":"---\nname: clawback\ndescription: Gmail security proxy with policy enforcement, approval workflows, and audit logging. Use when the user wants to read, search, or send Gmail with guardrails — send actions may require human approval before executing.\nhomepage: https://clawback.sh\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🛡️\",\n        \"requires\": { \"bins\": [\"clawback\"] },\n      },\n  }\n---\n\n# clawback\n\nUse `clawback` for Gmail with policy enforcement. All operations go through a server-side proxy that enforces policies and logs an audit trail. Sends may require human approval.\n\nPrerequisites\n\nThe `clawback` binary must be installed and on your PATH. If it's missing, releases are available at https://github.com/honeybadge-labs/clawback/releases.\n\nSetup (once)\n\n- `clawback auth login` (device flow — opens browser)\n- `clawback auth status` (verify connection)\n\nCommon commands\n\n- Gmail search: `clawback gmail search 'newer_than:7d' --max 10`\n- Gmail search (all pages): `clawback gmail search 'from:boss@company.com' --all --json`\n- Gmail get message: `clawback gmail get <messageId> --json`\n- Gmail send (plain): `clawback gmail send --to a@b.com --subject \"Hi\" --body \"Hello\"`\n- Gmail send (HTML): `clawback gmail send --to a@b.com --subject \"Hi\" --body-html \"<p>Hello</p>\"`\n- Gmail send (reply): `clawback gmail send --to a@b.com --subject \"Re: Hi\" --body \"Reply\" --reply-to-message-id <msgId> --thread-id <threadId>`\n- Thread list: `clawback gmail thread list 'subject:meeting' --max 20`\n- Thread get: `clawback gmail thread get <threadId> --json`\n- Thread modify labels: `clawback gmail thread modify <threadId> --add STARRED --remove UNREAD`\n- Labels list: `clawback gmail labels list`\n- Labels create: `clawback gmail labels create --name \"Important/Clients\"`\n- Labels modify message: `clawback gmail labels modify <messageId> --add STARRED --remove UNREAD`\n- Drafts list: `clawback gmail drafts list --json`\n- Drafts create: `clawback gmail drafts create --to a@b.com --subject \"Draft\" --body \"WIP\"`\n- Drafts send: `clawback gmail drafts send <draftId>` (may require approval)\n- Drafts delete: `clawback gmail drafts delete <draftId>`\n- History: `clawback gmail history --since <historyId> --max 50`\n- Batch delete: `clawback gmail batch delete <id1> <id2> <id3>`\n- Batch modify: `clawback gmail batch modify <id1> <id2> --add INBOX --remove SPAM`\n- Settings filters list: `clawback gmail settings filters list --json`\n- Settings send-as list: `clawback gmail settings send-as list`\n- Settings vacation get: `clawback gmail settings vacation get`\n- Settings forwarding list: `clawback gmail settings forwarding list`\n- Settings delegates list: `clawback gmail settings delegates list`\n- Approvals list: `clawback approvals list --status pending --json`\n- Approvals get: `clawback approvals get <approvalId> --json`\n- Policy list: `clawback policy list --json`\n\nAgent behavior\n\n- Never expose approval IDs, exit codes, or CLI commands to the user. Those are internal plumbing.\n- When composing email on the user's behalf, draft a natural subject and body — don't parrot their words verbatim. If they say \"send a hello to Alex,\" write a friendly greeting, not `--subject \"hello\" --body \"hello\"`.\n- Confirm with the user before sending. Show them the draft (to, subject, body) and ask if it looks good.\n\nHandling approvals (exit code 8)\n\nWhen a send command exits with code 8, it means the email needs human approval before it goes out.\n\n1. Tell the user in plain language: \"Sent! It needs approval in Clawback before it goes through — I'll keep an eye on it.\"\n2. Poll `clawback approvals get <approvalId> --json` in the background every ~30s.\n3. When resolved, proactively tell the user: \"Approved and delivered\" or \"The approval was rejected/expired — the email was not sent.\"\n4. Never ask the user to run commands or check approval status themselves.\n\nHandling other errors\n\n- Exit 4 (not authenticated): \"You're not signed in — let me open the login flow.\" Then run `clawback auth login`.\n- Exit 6 (blocked by policy): \"Your org's policy doesn't allow this action.\" Explain what was blocked.\n- Exit 3 (no results): Report naturally, e.g. \"No emails matched that search.\"\n- Exit 1 (unexpected error): Report the error and suggest retrying.\n\nNotes\n\n- `CB_SERVER` defaults to `https://clawback.sh`; set it to use a different server.\n- Prefer `--json` plus `--no-input` plus `--fail-empty` for reliable output parsing.\n- `--connection <id>` selects which Gmail connection to use; auto-detected if you have one connection.\n- `--all` auto-paginates search results (gmail search and thread list).\n- `--select field1,field2` projects JSON output to specific fields.\n- `--results-only` strips the envelope and returns just the data array.\n","tags":{"latest":"0.2.0"},"stats":{"comments":0,"downloads":837,"installsAllTime":32,"installsCurrent":0,"stars":0,"versions":2},"createdAt":1772050403680,"updatedAt":1778993260599},"latestVersion":{"version":"0.2.0","createdAt":1772143165008,"changelog":"Remove curl|bash install, declare CB_SERVER default, add agent behavior guidance, remove file-handling examples","license":null},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"rotemtam","userId":"s1739e30ks9yhzm0nrwqzwd97s83s0xw","displayName":"Rotem Tamir","image":"https://avatars.githubusercontent.com/u/1522681?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779960477794}}