VerifiedResearched 2026-10-28Confidence high

Google (Gmail + Calendar)

Google · workspace.google.com · Developer portal

Tier 4 · Review + external auditCustomer-side gate
Reading mail (gmail.readonly, gmail.modify) and creating drafts (gmail.compose) are restricted scopes. They need Google verification plus a yearly CASA security assessment. No Calendar scope is restricted.
sourced

Gmail scopes are classified: gmail.readonly, gmail.modify, gmail.compose, gmail.metadata, gmail.insert, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/ are restricted; gmail.send and two add-on message scopes are sensitive; gmail.labels and two add-on action scopes are non-sensitive.

Choose Gmail API scopes

sourced · official docs · 2026-10-28

sourced

Apps that access restricted scope data from or through a third-party server need a security assessment by a Google-empanelled assessor, using the App Defense Alliance CASA framework.

Restricted scope verification

sourced · official docs · 2026-10-28

sourced

Restricted scope apps must pass an annual security assessment at assurance level AL1 or AL2, assigned by risk, as the final step after other requirements, started when Trust and Safety contacts you.

Security Assessment

The App Defense Alliance tiering page (https://appdefensealliance.dev/casa/casa-tiering) also lists AL1 and AL2 with yearly revalidation.

sourced · official docs · 2026-10-28

inferred

An inbox assistant that reads mail and drafts replies needs a restricted Gmail scope, which puts it in tier 4. A send-only agent with Calendar would be tier 3.

Reading needs gmail.readonly or gmail.modify and drafting needs gmail.compose, all restricted (e1). Restricted scopes need the assessment (e2, e12). gmail.send and Calendar are sensitive (e1, e33).

inferred · reasoning · 2026-10-28

sourced

Google's restricted scope list includes gmail.readonly, gmail.metadata, gmail.modify, gmail.insert, gmail.compose, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/. It lists no Google Calendar scope.

Restricted scopes list

sourced · official docs · 2026-10-28

Customer-side gate: A Workspace admin can restrict Gmail or Calendar or block unconfigured apps. Then only apps marked Trusted or Specific Google data can connect, even after verification.

App types (2)
  • External user type, Web application client: Any Google user connects their own Gmail and Calendar. This guide covers this path.
  • Internal user type: Only users in your Google Cloud organization. No verification. Outside users get an org_internal error.
  1. Docs read(reached)
  2. Endpoints probed(reached)
  3. Portal checked(reached)
  4. Set up by a person(not reached)

Evidence: 0 tested, 3 probed, 30 sourced, 2 inferred

Generate a live guide to compare with this one.

Next step

Build on Composio's managed app You1 hour

Connect Gmail and Calendar through Composio managed auth. You do not need a Google app yet.

https://docs.composio.dev/toolkits/managed-auth
0 of 13

What does your agent need?

Select everything it does. Scopes decide the tier.

4Your tier: Review + external auditReview plus a third-party security assessment. Often paid and yearly.

This is the hardest marked scope. If lighter scopes cover your use case, you need tier 3 (Review required).

Start today

Composio-managed OAuth: Yes
sourced

Gmail and Google Calendar are listed in Composio's managed OAuth table.

Composio managed auth

sourced · composio docs · 2026-10-28

sourced

A custom auth config applies to new connections only; existing users must reconnect or be imported. With managed auth, Google's consent screen names Composio.

White-labeling authentication

sourced · composio docs · 2026-10-28

sourced

Reasons to bring your own app: your branding on consent, custom scopes, dedicated rate limit quota, and polling faster than the managed 15 minute minimum. You add the redirect URI shown in the Composio dashboard to your Google client.

Custom app vs managed app

sourced · composio docs · 2026-10-28

Composio provides managed OAuth for Gmail and Google Calendar. The consent screen says Composio, and you share quota. After you switch to your own app, existing users keep their connection until they re-authenticate, or until you import their credentials where Composio supports it.

Time and effort

You can build while you wait.

StageWho can connectHands-onWaitingReview
Prototype (Testing status)You and up to 100 test users on the Audience page.
sourced

In Testing status, up to 100 test users can connect, and test user authorizations expire 7 days after consent unless only basic sign-in scopes are requested.

Manage app audience

sourced · official docs · 2026-10-28

sourced

External apps in Testing status get refresh tokens that expire in 7 days; there is a limit of 100 refresh tokens per Google Account per client; Gmail-scoped refresh tokens stop working when the user changes password; admin restrictions return admin_policy_enforced.

Using OAuth 2.0 to Access Google APIs

sourced · official docs · 2026-10-28

sourced

Gmail and Google Calendar are listed in Composio's managed OAuth table.

Composio managed auth

sourced · composio docs · 2026-10-28

1 h to 3 hnoneNo
Limited beta (In production, unverified)Up to 100 new users in total, after an unverified app warning.
sourced

Apps showing the unverified app screen are limited to 100 new users in total over the project's lifetime, and the cap cannot be reset.

Manage app audience

sourced · official docs · 2026-10-28

sourced

An unverified app with sensitive or restricted scopes shows an unverified app screen, is limited to 100 new users until verified, and verification might take several months.

Unverified apps

sourced · official docs · 2026-10-28

sourced

External apps in Testing status get refresh tokens that expire in 7 days; there is a limit of 100 refresh tokens per Google Account per client; Gmail-scoped refresh tokens stop working when the user changes password; admin restrictions return admin_policy_enforced.

Using OAuth 2.0 to Access Google APIs

sourced · official docs · 2026-10-28

1 h to 2 hnoneNo
Production (verified, restricted scopes)Any Google user, with no warning screen. Workspace admins can still block you.
sourced

Google's estimates are brand verification 2 to 3 business days, sensitive scope verification 10 business days, restricted scope verification 6 weeks, and these are not guaranteed.

OAuth verification FAQ

sourced · official docs · 2026-10-28

sourced

Apps that access restricted scope data from or through a third-party server need a security assessment by a Google-empanelled assessor, using the App Defense Alliance CASA framework.

Restricted scope verification

sourced · official docs · 2026-10-28

sourced

Restricted scope apps must reverify and be reassessed at least every 12 months after the assessor's Letter of Assessment approval date. Google emails project Owners and Editors when it is due.

Restricted scope verification

sourced · official docs · 2026-10-28

sourced

A developer reports a 2026 verification request for the sensitive calendar.events scope waiting about 4 months with no Trust and Safety email. Related thread titles mention waits of 50 or more days.

OAuth verification pending since 22 Apr 2026

One thread read in full. The 50 day figure comes only from a related thread title. No staff answer shown.

sourced · community · 2026-10-28

sourced

A vendor-published comparison lists CASA Tier 2 at about $540 to $1,800 and Tier 3 at about $4,500 to $8,000 or more. Turnaround is 1 to 4 weeks for Tier 2, 2 to 6 weeks for Tier 3, and some large labs quote 4 to 8 weeks.

CASA Tier 2 and Tier 3 providers and pricing

Labeled as of 2024. Published by Switch Labs, a vendor that is not one of the listed labs. Uses older Tier 2/3 names, not AL1/AL2.

sourced · community · 2026-10-28

sourced

An unverified app with sensitive or restricted scopes shows an unverified app screen, is limited to 100 new users until verified, and verification might take several months.

Unverified apps

sourced · official docs · 2026-10-28

30 h to 100 hProvider says: 42 daysDevelopers report: 35+ daysYes
  • Prototype (Testing status): Test user grants and refresh tokens expire 7 days after consent. Background agents stop weekly until users reconnect.
  • Limited beta (In production, unverified): The 100 user cap covers the life of the project and cannot be reset. Refresh tokens no longer expire after 7 days.
  • Production (verified, restricted scopes): Google estimates 2 to 3 business days for branding and 6 weeks for restricted scopes, not guaranteed. A 2024 vendor comparison lists CASA at 1 to 8 weeks. Some reviews stall for months. Reassess every 12 months.

Scopes

Scopes that match your selection are marked.

  • Gmail labels and add-on actions (non-sensitive)Light review · Write data

    https://www.googleapis.com/auth/gmail.labels https://www.googleapis.com/auth/gmail.addons.current.action.compose

    No data access review. Brand verification only. Too narrow for an inbox agent.
    sourced

    Gmail scopes are classified: gmail.readonly, gmail.modify, gmail.compose, gmail.metadata, gmail.insert, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/ are restricted; gmail.send and two add-on message scopes are sensitive; gmail.labels and two add-on action scopes are non-sensitive.

    Choose Gmail API scopes

    sourced · official docs · 2026-10-28

    sourced

    Google's estimates are brand verification 2 to 3 business days, sensitive scope verification 10 business days, restricted scope verification 6 weeks, and these are not guaranteed.

    OAuth verification FAQ

    sourced · official docs · 2026-10-28

  • Calendar read and write (sensitive)Review · Read data, Write data, Act while offline

    https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.readonly https://www.googleapis.com/auth/calendar

    Needs verification with a demo video and scope justification. No security assessment. access_type=offline works at any tier.
    sourced

    Google gives reading events stored in Google Calendar as an example of a sensitive scope, and its sample justification uses the full calendar scope.

    Sensitive scope verification

    sourced · official docs · 2026-10-28

    sourced

    Google's sensitive scope page says sensitive verification typically takes 3 to 5 business days, and a compliant brand verification result must be published within 7 days.

    Sensitive scope verification

    Conflicts with the 10 business days in the FAQ (e7).

    sourced · official docs · 2026-10-28

    sourced

    Google's estimates are brand verification 2 to 3 business days, sensitive scope verification 10 business days, restricted scope verification 6 weeks, and these are not guaranteed.

    OAuth verification FAQ

    sourced · official docs · 2026-10-28

    inferred

    Calendar read and write scopes such as calendar.events are sensitive, not restricted.

    Google's restricted list (e35) names no Calendar scope, so Calendar is not restricted. That it is sensitive rather than non-sensitive rests on Google using Calendar event reading as its sensitive example (e9) and a developer thread (e29). No official page labels each Calendar scope. Confirm in the console.

    inferred · reasoning · 2026-10-28

    sourced

    Google's restricted scope list includes gmail.readonly, gmail.metadata, gmail.modify, gmail.insert, gmail.compose, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/. It lists no Google Calendar scope.

    Restricted scopes list

    sourced · official docs · 2026-10-28

  • Send mail only (sensitive)Review · Write data

    https://www.googleapis.com/auth/gmail.send

    Needs verification, no security assessment. Your agent cannot read the inbox or save drafts.
    sourced

    Gmail scopes are classified: gmail.readonly, gmail.modify, gmail.compose, gmail.metadata, gmail.insert, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/ are restricted; gmail.send and two add-on message scopes are sensitive; gmail.labels and two add-on action scopes are non-sensitive.

    Choose Gmail API scopes

    sourced · official docs · 2026-10-28

    sourced

    Google's sensitive scope page says sensitive verification typically takes 3 to 5 business days, and a compliant brand verification result must be published within 7 days.

    Sensitive scope verification

    Conflicts with the 10 business days in the FAQ (e7).

    sourced · official docs · 2026-10-28

  • Read, modify, or draft mail (restricted)Review + audit · Read data, Write data

    https://www.googleapis.com/auth/gmail.readonly https://www.googleapis.com/auth/gmail.modify https://www.googleapis.com/auth/gmail.compose https://www.googleapis.com/auth/gmail.metadata https://mail.google.com/

    Needs verification plus a yearly CASA assessment when data reaches your server. Plan on weeks. An inbox assistant lands here.
    sourced

    Gmail scopes are classified: gmail.readonly, gmail.modify, gmail.compose, gmail.metadata, gmail.insert, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/ are restricted; gmail.send and two add-on message scopes are sensitive; gmail.labels and two add-on action scopes are non-sensitive.

    Choose Gmail API scopes

    sourced · official docs · 2026-10-28

    sourced

    Apps that access restricted scope data from or through a third-party server need a security assessment by a Google-empanelled assessor, using the App Defense Alliance CASA framework.

    Restricted scope verification

    sourced · official docs · 2026-10-28

    sourced

    Restricted scope apps must reverify and be reassessed at least every 12 months after the assessor's Letter of Assessment approval date. Google emails project Owners and Editors when it is due.

    Restricted scope verification

    sourced · official docs · 2026-10-28

    sourced

    Restricted scope apps must pass an annual security assessment at assurance level AL1 or AL2, assigned by risk, as the final step after other requirements, started when Trust and Safety contacts you.

    Security Assessment

    The App Defense Alliance tiering page (https://appdefensealliance.dev/casa/casa-tiering) also lists AL1 and AL2 with yearly revalidation.

    sourced · official docs · 2026-10-28

    sourced

    Google's restricted scope list includes gmail.readonly, gmail.metadata, gmail.modify, gmail.insert, gmail.compose, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/. It lists no Google Calendar scope.

    Restricted scopes list

    sourced · official docs · 2026-10-28

  • Mail settings (restricted)Review + audit · Admin-level

    https://www.googleapis.com/auth/gmail.settings.basic https://www.googleapis.com/auth/gmail.settings.sharing

    Same review as reading mail. Request only to manage filters, forwarding, or delegates.
    sourced

    Gmail scopes are classified: gmail.readonly, gmail.modify, gmail.compose, gmail.metadata, gmail.insert, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/ are restricted; gmail.send and two add-on message scopes are sensitive; gmail.labels and two add-on action scopes are non-sensitive.

    Choose Gmail API scopes

    sourced · official docs · 2026-10-28

    sourced

    Apps that access restricted scope data from or through a third-party server need a security assessment by a Google-empanelled assessor, using the App Defense Alliance CASA framework.

    Restricted scope verification

    sourced · official docs · 2026-10-28

    sourced

    Google's restricted scope list includes gmail.readonly, gmail.metadata, gmail.modify, gmail.insert, gmail.compose, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/. It lists no Google Calendar scope.

    Restricted scopes list

    sourced · official docs · 2026-10-28

Requirements

  • probed

    Developer portal: the Google Auth Platform console page redirects to Google sign-in, so you need a Google account.

    https://console.cloud.google.com/auth/overview

    HEAD returned 302 to accounts.google.com/ServiceLogin?service=cloudconsole.

    probed · probe · 2026-10-28

    sourced

    Apps showing the unverified app screen are limited to 100 new users in total over the project's lifetime, and the cap cannot be reset.

    Manage app audience

    sourced · official docs · 2026-10-28

  • sourced

    Verification needs a homepage on a domain you own, a privacy policy on the same domain linked from homepage and consent screen, and every authorized domain verified in Search Console by a project Owner or Editor.

    Verification requirements

    sourced · official docs · 2026-10-28

  • sourced

    Verification needs a homepage on a domain you own, a privacy policy on the same domain linked from homepage and consent screen, and every authorized domain verified in Search Console by a project Owner or Editor.

    Verification requirements

    sourced · official docs · 2026-10-28

  • sourced

    Workspace API data may not be used to train AI or ML models beyond the user's own personalized model, and you must post an affirmative Limited Use statement in the app or on your website.

    Google Workspace API User Data and Developer Policy

    sourced · official policy · 2026-10-28

    sourced

    Limited Use rules: use data only for user-facing features, no transfers except listed cases, no human reading except listed cases, and no ads, data brokers, or credit decisions.

    Google API Services User Data Policy

    sourced · official policy · 2026-10-28

  • sourced

    You must request the narrowest scopes and justify each, including why narrower scopes will not work. If user data trains AI models, the video must show explicit user consent.

    Verification requirements

    sourced · official docs · 2026-10-28

  • sourced

    The demo video must be on YouTube as Unlisted and show the English consent flow, the app name, the OAuth client ID in the address bar, and the feature behind each sensitive and restricted scope, for each client.

    Restricted scope verification

    sourced · official docs · 2026-10-28

  • sourced

    Apps that access restricted scope data from or through a third-party server need a security assessment by a Google-empanelled assessor, using the App Defense Alliance CASA framework.

    Restricted scope verification

    sourced · official docs · 2026-10-28

    sourced

    Restricted scope apps must reverify and be reassessed at least every 12 months after the assessor's Letter of Assessment approval date. Google emails project Owners and Editors when it is due.

    Restricted scope verification

    sourced · official docs · 2026-10-28

    sourced

    Google does not charge for the security assessment. Independent CASA-authorized assessors do it, and you agree the price with them directly.

    OAuth verification FAQ

    sourced · official docs · 2026-10-28

    sourced

    Restricted scope apps must pass an annual security assessment at assurance level AL1 or AL2, assigned by risk, as the final step after other requirements, started when Trust and Safety contacts you.

    Security Assessment

    The App Defense Alliance tiering page (https://appdefensealliance.dev/casa/casa-tiering) also lists AL1 and AL2 with yearly revalidation.

    sourced · official docs · 2026-10-28

Steps

Prototype

  1. Connect Gmail and Calendar through Composio managed auth. You do not need a Google app yet.

    https://docs.composio.dev/toolkits/managed-auth
    sourced

    Gmail and Google Calendar are listed in Composio's managed OAuth table.

    Composio managed auth

    sourced · composio docs · 2026-10-28

    sourced

    A custom auth config applies to new connections only; existing users must reconnect or be imported. With managed auth, Google's consent screen names Composio.

    White-labeling authentication

    sourced · composio docs · 2026-10-28

  2. Use gmail.send if you only send. Reading or drafting needs a restricted scope. Prefer calendar.events over the full calendar scope.

    https://developers.google.com/workspace/gmail/api/auth/scopes
    sourced

    Gmail scopes are classified: gmail.readonly, gmail.modify, gmail.compose, gmail.metadata, gmail.insert, gmail.settings.basic, gmail.settings.sharing, and https://mail.google.com/ are restricted; gmail.send and two add-on message scopes are sensitive; gmail.labels and two add-on action scopes are non-sensitive.

    Choose Gmail API scopes

    sourced · official docs · 2026-10-28

    sourced

    You must request the narrowest scopes and justify each, including why narrower scopes will not work. If user data trains AI models, the video must show explicit user consent.

    Verification requirements

    sourced · official docs · 2026-10-28

  3. On Branding, enter app name, support email, and developer contact. On Audience, pick External and keep Testing status. On Data Access, add scopes.

    https://console.cloud.google.com/auth/overview
    probed

    Developer portal: the Google Auth Platform console page redirects to Google sign-in, so you need a Google account.

    https://console.cloud.google.com/auth/overview

    HEAD returned 302 to accounts.google.com/ServiceLogin?service=cloudconsole.

    probed · probe · 2026-10-28

    sourced

    You verify and publish branding on the Branding page before requesting data access verification in the Verification Center, where you declare scopes, add up to three documentation links, and pick a permitted application type.

    Restricted scope verification

    sourced · official docs · 2026-10-28

    sourced

    In Testing status, up to 100 test users can connect, and test user authorizations expire 7 days after consent unless only basic sign-in scopes are requested.

    Manage app audience

    sourced · official docs · 2026-10-28

  4. On Clients, add your exact HTTPS callback URL or the Composio redirect URI. Request access_type=offline and use PKCE with S256.

    https://console.cloud.google.com/auth/clients
    probed

    Google's OpenID configuration lists the authorize, token, and revoke endpoints and supports PKCE with S256.

    https://accounts.google.com/.well-known/openid-configuration

    HTTP 200. code_challenge_methods_supported: plain, S256. authorization_endpoint https://accounts.google.com/o/oauth2/v2/auth.

    probed · probe · 2026-10-28

    sourced

    Reasons to bring your own app: your branding on consent, custom scopes, dedicated rate limit quota, and polling faster than the managed 15 minute minimum. You add the redirect URI shown in the Composio dashboard to your Google client.

    Custom app vs managed app

    sourced · composio docs · 2026-10-28

  5. Add up to 100 test users. Users may grant only Gmail or only Calendar. Turn off features whose scopes are missing.

    sourced

    In Testing status, up to 100 test users can connect, and test user authorizations expire 7 days after consent unless only basic sign-in scopes are requested.

    Manage app audience

    sourced · official docs · 2026-10-28

    sourced

    External apps in Testing status get refresh tokens that expire in 7 days; there is a limit of 100 refresh tokens per Google Account per client; Gmail-scoped refresh tokens stop working when the user changes password; admin restrictions return admin_policy_enforced.

    Using OAuth 2.0 to Access Google APIs

    sourced · official docs · 2026-10-28

    sourced

    When an app requests more than one non-sign-in scope, users can grant some and decline others, for example Calendar but not Gmail, so apps must check granted scopes.

    How to handle granular permissions

    sourced · official docs · 2026-10-28

Limited beta

  1. On Audience, click Publish app. Unverified apps show a warning. Skip this if you can wait.

    sourced

    Apps showing the unverified app screen are limited to 100 new users in total over the project's lifetime, and the cap cannot be reset.

    Manage app audience

    sourced · official docs · 2026-10-28

    sourced

    An unverified app with sensitive or restricted scopes shows an unverified app screen, is limited to 100 new users until verified, and verification might take several months.

    Unverified apps

    sourced · official docs · 2026-10-28

Production

  1. Publish the homepage, privacy policy, and Limited Use statement. Verify the domain in Search Console.

    https://search.google.com/search-console
    sourced

    Verification needs a homepage on a domain you own, a privacy policy on the same domain linked from homepage and consent screen, and every authorized domain verified in Search Console by a project Owner or Editor.

    Verification requirements

    sourced · official docs · 2026-10-28

    sourced

    Workspace API data may not be used to train AI or ML models beyond the user's own personalized model, and you must post an affirmative Limited Use statement in the app or on your website.

    Google Workspace API User Data and Developer Policy

    sourced · official policy · 2026-10-28

  2. On Branding, click Verify Branding, then Publish branding. Publish a compliant result within 7 days or verify again.

    https://console.cloud.google.com/auth/branding
    sourced

    You verify and publish branding on the Branding page before requesting data access verification in the Verification Center, where you declare scopes, add up to three documentation links, and pick a permitted application type.

    Restricted scope verification

    sourced · official docs · 2026-10-28

    sourced

    Google's estimates are brand verification 2 to 3 business days, sensitive scope verification 10 business days, restricted scope verification 6 weeks, and these are not guaranteed.

    OAuth verification FAQ

    sourced · official docs · 2026-10-28

    sourced

    Google's sensitive scope page says sensitive verification typically takes 3 to 5 business days, and a compliant brand verification result must be published within 7 days.

    Sensitive scope verification

    Conflicts with the 10 business days in the FAQ (e7).

    sourced · official docs · 2026-10-28

  3. Use the drafts below. Upload the video to YouTube as Unlisted.

    sourced

    The demo video must be on YouTube as Unlisted and show the English consent flow, the app name, the OAuth client ID in the address bar, and the feature behind each sensitive and restricted scope, for each client.

    Restricted scope verification

    sourced · official docs · 2026-10-28

    sourced

    You must request the narrowest scopes and justify each, including why narrower scopes will not work. If user data trains AI models, the video must show explicit user consent.

    Verification requirements

    sourced · official docs · 2026-10-28

  4. In the Verification Center, declare all scopes and add up to three documentation links, the video link, justifications, and your application type.

    https://console.cloud.google.com/auth/verification
    sourced

    You verify and publish branding on the Branding page before requesting data access verification in the Verification Center, where you declare scopes, add up to three documentation links, and pick a permitted application type.

    Restricted scope verification

    sourced · official docs · 2026-10-28

    sourced

    The demo video must be on YouTube as Unlisted and show the English consent flow, the app name, the OAuth client ID in the address bar, and the feature behind each sensitive and restricted scope, for each client.

    Restricted scope verification

    sourced · official docs · 2026-10-28

  5. Reply fast. Google says timing depends on your response speed. If nothing arrives for weeks, reply on the verification thread.

    sourced

    Google's estimates are brand verification 2 to 3 business days, sensitive scope verification 10 business days, restricted scope verification 6 weeks, and these are not guaranteed.

    OAuth verification FAQ

    sourced · official docs · 2026-10-28

    sourced

    A developer reports a 2026 verification request for the sensitive calendar.events scope waiting about 4 months with no Trust and Safety email. Related thread titles mention waits of 50 or more days.

    OAuth verification pending since 22 Apr 2026

    One thread read in full. The 50 day figure comes only from a related thread title. No staff answer shown.

    sourced · community · 2026-10-28

    sourced

    An unverified app with sensitive or restricted scopes shows an unverified app screen, is limited to 100 new users until verified, and verification might take several months.

    Unverified apps

    sourced · official docs · 2026-10-28

  6. Get quotes from two or three authorized labs. Fix every critical and high finding and send the Letter of Assessment to Google.

    https://appdefensealliance.dev/casa
    sourced

    Restricted scope apps must pass an annual security assessment at assurance level AL1 or AL2, assigned by risk, as the final step after other requirements, started when Trust and Safety contacts you.

    Security Assessment

    The App Defense Alliance tiering page (https://appdefensealliance.dev/casa/casa-tiering) also lists AL1 and AL2 with yearly revalidation.

    sourced · official docs · 2026-10-28

    sourced

    Google does not charge for the security assessment. Independent CASA-authorized assessors do it, and you agree the price with them directly.

    OAuth verification FAQ

    sourced · official docs · 2026-10-28

    sourced

    Your assessment tier depends on users per type of data; some apps are in scope for a free Tier 2 assessment; Tier 3 assessors need read-only cloud access; critical and high findings must be fixed to get a Letter of Assessment; Scout Suite can preview results.

    OAuth verification FAQ

    sourced · official docs · 2026-10-28

    sourced

    A vendor-published comparison lists CASA Tier 2 at about $540 to $1,800 and Tier 3 at about $4,500 to $8,000 or more. Turnaround is 1 to 4 weeks for Tier 2, 2 to 6 weeks for Tier 3, and some large labs quote 4 to 8 weeks.

    CASA Tier 2 and Tier 3 providers and pricing

    Labeled as of 2024. Published by Switch Labs, a vendor that is not one of the listed labs. Uses older Tier 2/3 names, not AL1/AL2.

    sourced · community · 2026-10-28

    sourced

    A developer reported a Tier 2 CASA via PwC at no charge in late 2023, with the lab requiring a Fortify scan of uploaded source code.

    Crack Google's CASA Review

    Google Drive scopes, not Gmail. One person's report.

    sourced · community · 2026-10-28

  7. Create a custom auth config with your client ID and secret. Ask existing users to reconnect. Set a 10 month reverification reminder.

    sourced

    A custom auth config applies to new connections only; existing users must reconnect or be imported. With managed auth, Google's consent screen names Composio.

    White-labeling authentication

    sourced · composio docs · 2026-10-28

    sourced

    Restricted scope apps must reverify and be reassessed at least every 12 months after the assessor's Letter of Assessment approval date. Google emails project Owners and Editors when it is due.

    Restricted scope verification

    sourced · official docs · 2026-10-28

Blockers

  • Test users must reconnect weekly.

    Cause: In Testing status, grants and refresh tokens expire 7 days after consent.

    Fix: Accept it in development, or publish unverified.

    sourced

    In Testing status, up to 100 test users can connect, and test user authorizations expire 7 days after consent unless only basic sign-in scopes are requested.

    Manage app audience

    sourced · official docs · 2026-10-28

    sourced

    External apps in Testing status get refresh tokens that expire in 7 days; there is a limit of 100 refresh tokens per Google Account per client; Gmail-scoped refresh tokens stop working when the user changes password; admin restrictions return admin_policy_enforced.

    Using OAuth 2.0 to Access Google APIs

    sourced · official docs · 2026-10-28

  • New users hit the user cap error.

    Cause: Unverified apps get 100 new users per project lifetime.

    Fix: Complete verification. Test in a separate project.

    Help: Request verification in the Verification Center to appeal.

    sourced

    Apps showing the unverified app screen are limited to 100 new users in total over the project's lifetime, and the cap cannot be reset.

    Manage app audience

    sourced · official docs · 2026-10-28

  • Verification sits in review for weeks.

    Cause: Review queues vary.

    Fix: Complete every Verification Center section, then reply on the thread.

    Help: Post on discuss.google.dev with your project number, never secrets.

    sourced

    Google's estimates are brand verification 2 to 3 business days, sensitive scope verification 10 business days, restricted scope verification 6 weeks, and these are not guaranteed.

    OAuth verification FAQ

    sourced · official docs · 2026-10-28

    sourced

    A developer reports a 2026 verification request for the sensitive calendar.events scope waiting about 4 months with no Trust and Safety email. Related thread titles mention waits of 50 or more days.

    OAuth verification pending since 22 Apr 2026

    One thread read in full. The 50 day figure comes only from a related thread title. No staff answer shown.

    sourced · community · 2026-10-28

  • Reviewer rejects a scope or asks why a narrower one fails.

    Cause: Your video or justification does not show a feature that needs it.

    Fix: Drop the scope, or show the feature and explain why narrower scopes fail.

    sourced

    You must request the narrowest scopes and justify each, including why narrower scopes will not work. If user data trains AI models, the video must show explicit user consent.

    Verification requirements

    sourced · official docs · 2026-10-28

    sourced

    The demo video must be on YouTube as Unlisted and show the English consent flow, the app name, the OAuth client ID in the address bar, and the feature behind each sensitive and restricted scope, for each client.

    Restricted scope verification

    sourced · official docs · 2026-10-28

  • Business users get access blocked or admin_policy_enforced.

    Cause: Their Workspace admin restricted Gmail or Calendar or blocks unconfigured apps.

    Fix: Ask the admin to mark your client ID Trusted or Specific Google data in API controls.

    sourced

    Workspace admins can set apps to Trusted, Specific Google data, Limited, or Blocked, set Gmail or Calendar to Restricted, and block unconfigured third-party apps.

    Control which third-party and internal apps access Google Workspace data

    sourced · official docs · 2026-10-28

    sourced

    External apps in Testing status get refresh tokens that expire in 7 days; there is a limit of 100 refresh tokens per Google Account per client; Gmail-scoped refresh tokens stop working when the user changes password; admin restrictions return admin_policy_enforced.

    Using OAuth 2.0 to Access Google APIs

    sourced · official docs · 2026-10-28

  • Users granted Calendar but not Gmail.

    Cause: Granular consent lets users untick scopes.

    Fix: Check granted scopes after the callback. Ask again when the user tries that feature.

    sourced

    When an app requests more than one non-sign-in scope, users can grant some and decline others, for example Calendar but not Gmail, so apps must check granted scopes.

    How to handle granular permissions

    sourced · official docs · 2026-10-28

  • The CASA report lists critical or high findings.

    Cause: The lab signs off only after you fix them.

    Fix: Fix and rescan. Run Scout Suite or a similar free scanner first.

    Help: Your CASA lab's support, then the verification thread.

    sourced

    Your assessment tier depends on users per type of data; some apps are in scope for a free Tier 2 assessment; Tier 3 assessors need read-only cloud access; critical and high findings must be fixed to get a Letter of Assessment; Scout Suite can preview results.

    OAuth verification FAQ

    sourced · official docs · 2026-10-28

Agent and you

Agent did

  • Read Google's scope lists, verification docs, security assessment page, and user data policies.
  • Probed Google's OpenID configuration: PKCE with S256 is supported.
  • Probed the authorize endpoint with a fake client ID: it returns invalid_client.
  • Checked the Cloud console: it redirects to Google sign-in.
  • Checked Composio docs: Gmail and Calendar have managed OAuth.

Agent can do

  • Map features to the narrowest scopes.
  • Draft justifications, the video shot list, and privacy policy sections.
  • Fill the console pages in a browser after you sign in.
  • Draft quote requests to CASA labs.

You must do

  • Sign in to Google Cloud and own the project.
  • Verify your domain in Search Console (DNS change).
  • Publish the homepage, privacy policy, and Limited Use statement.
  • Record and upload the demo video.
  • Choose and pay a CASA lab and fix findings.
  • Answer review emails and renew yearly.

Drafts

Justification for gmail.modify (restricted) draft · scope justification
[App name] is an email assistant. Each user connects their own Gmail account.

We request https://www.googleapis.com/auth/gmail.modify to:
1. Read new messages to summarize threads and suggest replies.
2. Save suggested replies as drafts for the user to review.
3. Apply labels and archive messages the user files.

Why narrower scopes do not work:
- gmail.readonly cannot create drafts or change labels.
- gmail.compose cannot read threads.
- gmail.metadata gives headers only.
- gmail.send sends without user review.

We never delete messages. We use content only to serve the connected user. We do not use it for ads, sell it, or train generalized AI models on it. [Edit: describe storage, retention, and deletion on disconnect.]
Justification for calendar.events (sensitive) draft · scope justification
We request https://www.googleapis.com/auth/calendar.events to read events to propose meeting times, and to create or update events the user approves. calendar.readonly cannot create events. calendar.freebusy shows busy times only. We do not manage calendars or sharing, so we do not need the full calendar scope.
Demo video shot list for Google verification draft · demo video script
Length: 3 to 5 minutes. Language: English. Upload to YouTube as Unlisted.
1. Show your homepage URL and its privacy policy link.
2. Click Connect Google. Pause on the sign-in.
3. Zoom into the address bar so the client_id is readable. Show your app name.
4. Show and grant every requested scope.
5. gmail.modify: show a thread summary, a reply saved as a Gmail draft, and a label applied.
6. calendar.events: show events read from Calendar, then create one and show it in Google Calendar.
7. Repeat consent for each OAuth client (web, mobile).
8. Show disconnect and data deletion.
9. If you train AI models on user data, show that consent screen. Otherwise say on screen that you do not.
Privacy policy checklist for Gmail and Calendar data draft · privacy policy checklist
- Same domain as your homepage, linked from the homepage and consent screen (same URL).
- Names the data: messages, drafts, labels, calendar events.
- Says you use it only for user-facing features.
- Says how, how long, and where you store it.
- Names subprocessors (model provider, cloud host) and why.
- Says how users revoke access and request deletion, and how fast you delete.
- States humans do not read the data except with consent, for security, or by law.
- States you do not use it for ads, sell it, or train generalized AI or ML models on it.
- Includes a Limited Use statement in your own words: your use and transfer of data from Google APIs follows the Google API Services User Data Policy, including its Limited Use requirements. Link the policy (https://developers.google.com/terms/api-services-user-data-policy).
- Get legal review first.
Quote request to a CASA lab draft · support email
Hello,

We need a CASA assessment for restricted Gmail scopes (gmail.modify). Our web app runs on [cloud provider]. Expected users: [number].

Please share your price for our assurance level, time to Letter of Assessment, required scans or access, and yearly reassessment price.

Thanks,
[Name]

Open questions

  • How long does sensitive scope review take?

    Google says 3 to 5 business days on one page and 10 on the FAQ. Developers report months-long stalls in 2026.

    To resolve: Track your dates and update this guide after a real attempt.

  • Which Calendar scopes are sensitive or restricted?

    No official per-scope list was found, and the restricted list names no Calendar scope.

    To resolve: Add the scopes on Data Access in a test project and read the console labels.

  • What does CASA cost in 2026, and is free Tier 2 still offered?

    Google mentions free Tier 2 for some apps. Lab prices come from a 2024 vendor comparison.

    To resolve: Get lab quotes once Google assigns your assurance level.

  • Does the 6 week estimate include the security assessment?

    The restricted scope page calls the assessment a large part of a several-week process.

    To resolve: Ask on the verification thread.

  • Can you skip CASA if mail data never reaches your server?

    Google requires it when restricted data passes through a third-party server, as with most agent backends.

    To resolve: Assume you need it. Confirm with the reviewer if fully client-side.

Sources

  1. Choose Gmail API scopes official docs · 2026-10-28
  2. Restricted scope verification official docs · 2026-10-28
  3. OAuth verification FAQ official docs · 2026-10-28
  4. Sensitive scope verification official docs · 2026-10-28
  5. Security Assessment official docs · 2026-10-28
  6. Manage app audience official docs · 2026-10-28
  7. Using OAuth 2.0 to Access Google APIs official docs · 2026-10-28
  8. Verification requirements official docs · 2026-10-28
  9. Google API Services User Data Policy official policy · 2026-10-28
  10. Google Workspace API User Data and Developer Policy official policy · 2026-10-28
  11. Control which third-party and internal apps access Google Workspace data official docs · 2026-10-28
  12. How to handle granular permissions official docs · 2026-10-28
  13. Composio managed auth composio docs · 2026-10-28
  14. White-labeling authentication composio docs · 2026-10-28
  15. Custom app vs managed app composio docs · 2026-10-28
  16. https://accounts.google.com/.well-known/openid-configuration probe · 2026-10-28
  17. https://accounts.google.com/o/oauth2/v2/auth?client_id=oauth-guide-probe-invalid&response_type=code&redirect_uri=https://example.com/cb&scope=openid probe · 2026-10-28
  18. https://console.cloud.google.com/auth/overview probe · 2026-10-28
  19. OAuth verification pending since 22 Apr 2026 community · 2026-10-28
  20. CASA Tier 2 and Tier 3 providers and pricing community · 2026-10-28
  21. Crack Google's CASA Review community · 2026-10-28
  22. Unverified apps official docs · 2026-10-28
  23. Restricted scopes list official docs · 2026-10-28

Verification changes

  • Corrected the e27 probe URL to include response_type, redirect_uri, and scope.

    Re-running the recorded URL with only client_id returns invalid_request, not invalid_client. The full request returns invalid_client as claimed. 2026-10-28

  • Narrowed e29 from '50 days to over 4 months' to one report of about 4 months plus a thread title citing 50 or more days.

    The thread was submitted 22 April and posted late August, so about 4 months, not over. The 50 day figure is only a title of a linked thread. 2026-10-28

  • Changed CASA lab time from '1 to 4 weeks, developers report' to '1 to 8 weeks depending on lab and tier', in production notes, step s12, and e30.

    The cited page is a vendor comparison, not developer reports. Its 1 to 4 weeks covers Tier 2 only; Tier 3 runs to 6 weeks and some labs quote 4 to 8 weeks. 2026-10-28

  • Added e35 (Google's official restricted scope list) as a second official source for the tier 4 decision and for Calendar not being restricted. Reworded the verdict summary so it no longer states Calendar scopes are sensitive as fact.

    The list confirms gmail.compose and the other mail scopes are restricted and names no Calendar scope. No official page labels individual Calendar scopes as sensitive, so that part stays inferred (e33). 2026-10-28

  • Composio note: replaced "Existing users must reconnect." with the switching rule as Composio states it, including importing credentials.

    A reviewer cross-checked Composio's docs: existing users stay on the old connection until they re-authenticate or you import their credentials, so "must reconnect" overstated it. 2026-10-28