2.6 KiB
2.6 KiB
Google OAuth 2.0 Desktop Client Architecture & Security Decision
Document Version: 1.0.0
Date: 2026-08-20
Status: Approved Architectural Decision
Target Module: src/antigravity_provider/oauth.py
1. Context & Threat Model
Hermes Hub acts as a local orchestrator and router for developer agents, connecting to Google Antigravity (Gemini Code Assist / CloudCode ecosystem) via OAuth 2.0.
Under RFC 8252 (OAuth 2.0 for Native Apps):
- A desktop or command-line application is classified as a Public Client (RFC 6749 Section 2.1).
- Native desktop applications cannot securely store private client secrets against binary inspection or local debugging.
- Security of the authorization grant relies on PKCE (RFC 7636) and the Loopback Interface Redirect URI (
http://127.0.0.1:51121/oauth-callback).
2. Decision: Documented Native Desktop Client
We utilize the standard Google CloudCode Desktop OAuth Client configuration intended for native developer desktop tooling.
Configuration Specification
- Client Type: Native Application (Installed App)
- Client ID:
1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com - Client Secret:
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(Public client placeholder per Google Cloud SDK native tool standard) - Redirect URI:
http://127.0.0.1:51121/oauth-callback - Auth Endpoint:
https://accounts.google.com/o/oauth2/v2/auth - Token Endpoint:
https://oauth2.googleapis.com/token - Required Scopes:
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/userinfo.profilehttps://www.googleapis.com/auth/ccloghttps://www.googleapis.com/auth/experimentsandconfigs
3. Transparency & Scanner Policy
- No Obfuscation: The source code in
src/antigravity_provider/oauth.pydirectly defines these public constants with explicit references to RFC 8252. Obfuscated string concatenation ("abc" + "def") is strictly prohibited. - Scanner Policy: The security scanner treats the documented native public client constants as known standard constants, while strictly prohibiting live user API keys (
sk-...,opencode-...), bearer tokens, private keys, and unauthorized secret assignments in source code. - Local User Credential Isolation: All runtime user tokens (
access_token,refresh_token, expiration timestamps) are saved strictly inside the user's isolated local data directory (%HERMES_HOME%/agy_profiles/<profile_id>/auth.jsonor OS keychain) and are never tracked in git or shared.