Requested Google OAuth Scopes

This page documents the Google OAuth 2.0 scopes that asciiflow requests when you sign in with Google, and explains why each scope is needed. asciiflow is a browser-based ASCII diagram editor; the scopes below are the minimum required to identify you and to read/write your own diagrams in Google Drive.

Summary table

Scope Purpose How the app uses it
openid OpenID Connect authentication Establishes your identity via a signed ID token from Google. Used only during the sign-in flow.
email View your email address The app reads your email address from the Google userinfo endpoint to match it against the configured allowlist (ALLOWED_EMAILS). Only the allowlisted email may sign in.
profile View your basic profile info Returns your name and a profile picture URL. Used to greet you by name in the UI; not stored beyond the session.
https://www.googleapis.com/auth/drive.metadata.readonly Read metadata of your Google Drive files Used to list the ASCII diagrams you have previously saved to your own Google Drive, so asciiflow can display them in your diagram list. asciiflow reads only the file name, ID, and modification time of diagrams you saved through it — never file contents, and never files you did not create with asciiflow.
https://www.googleapis.com/auth/drive.file Read and write files asciiflow created in your Google Drive Used by the background keepalive worker to create a tiny temp file in your Drive and immediately delete it, so the Drive API client stays "active" under Google's inactivity policy. Because this is the drive.file scope, asciiflow can only ever see/touch files it created itself — your other Drive files are never read, modified, or deleted. The temp file exists for only a few seconds before being deleted.

Why these scopes?

The first three scopes (openid, email, profile) are required for a standard "Sign in with Google" flow and to identify you across sessions.

Reading your diagrams

The drive.metadata.readonly scope is needed so asciiflow can read the metadata of diagrams you have saved in your own Google Drive and present them to you in the diagram picker. asciiflow reads only the metadata (name, ID, modified time) of diagram files you saved through it; it never reads the contents of any other Drive file.

Creating and deleting the keepalive file (drive.file)

The drive.file scope is used by asciiflow's background keepalive worker. Once per DRIVE_KEEPALIVE_INTERVAL (default 24 hours) asciiflow creates a tiny temp file named asciiflow-keepalive-<timestamp>.txt in your Drive and immediately deletes it. This marks the Drive API client "active" under Google's inactivity policy so the OAuth client is not deleted.

Because drive.file only grants access to files asciiflow itself created, asciiflow can never read, modify, or delete any other file in your Drive — only the temp file it just created, which is deleted within seconds. If a delete fails (e.g. transient network error), the file id is logged so it can be removed manually; it remains visible only to asciiflow.

No other Google API is accessed by asciiflow.

Incremental authorization

asciiflow requests these scopes in two stages, so you never grant more than you intend:

  1. Sign-in — when you first sign in with Google, asciiflow requests only the basic scopes openid, email, and profile. No Drive access is requested at this stage, so the sign-in consent screen is minimal.
  2. Drive access — only if you later click "Authorize Google Drive access" on the home page does asciiflow request the two Drive scopes (drive.metadata.readonly and drive.file). This second request uses include_granted_scopes=true, so the basic scopes you already granted are preserved and you only approve the new Drive scopes.

You can revoke Drive access (or all access) at any time at https://myaccount.google.com/permissions.

Token storage

The OAuth access token and refresh token returned by Google are stored locally on the server, encrypted with AES-256-GCM, so the app can continue to access your saved diagrams without prompting you to sign in on every visit. See the privacy policy for details.

Revocation

You can revoke the app's access at any time at https://myaccount.google.com/permissions.