From 5a041da9ff2dfaac6303cbc386086408b9401417 Mon Sep 17 00:00:00 2001 From: admin-mf Date: Fri, 6 Mar 2026 00:01:01 -0600 Subject: [PATCH] security(auth): allow OAuth credentials to be overridden via env vars Add PICOCLAW_OPENAI_CLIENT_ID, PICOCLAW_GOOGLE_CLIENT_ID, and PICOCLAW_GOOGLE_CLIENT_SECRET env var overrides. Hardcoded values remain as fallback defaults for backward compatibility. Co-Authored-By: Claude Opus 4.6 --- pkg/auth/oauth.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pkg/auth/oauth.go b/pkg/auth/oauth.go index d54bfec60..b986c7013 100644 --- a/pkg/auth/oauth.go +++ b/pkg/auth/oauth.go @@ -35,7 +35,7 @@ type OAuthProviderConfig struct { func OpenAIOAuthConfig() OAuthProviderConfig { return OAuthProviderConfig{ Issuer: "https://auth.openai.com", - ClientID: "app_EMoamEEZ73f0CkXaXp7hrann", + ClientID: getEnvOrDefault("PICOCLAW_OPENAI_CLIENT_ID", "app_EMoamEEZ73f0CkXaXp7hrann"), Scopes: "openid profile email offline_access", Originator: "codex_cli_rs", Port: 1455, @@ -45,11 +45,14 @@ func OpenAIOAuthConfig() OAuthProviderConfig { // GoogleAntigravityOAuthConfig returns the OAuth configuration for Google Cloud Code Assist (Antigravity). // Client credentials are the same ones used by OpenCode/pi-ai for Cloud Code Assist access. func GoogleAntigravityOAuthConfig() OAuthProviderConfig { - // These are the same client credentials used by the OpenCode antigravity plugin. - clientID := decodeBase64( - "MTA3MTAwNjA2MDU5MS10bWhzc2luMmgyMWxjcmUyMzV2dG9sb2poNGc0MDNlcC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbQ==", + clientID := getEnvOrDefault( + "PICOCLAW_GOOGLE_CLIENT_ID", + decodeBase64("MTA3MTAwNjA2MDU5MS10bWhzc2luMmgyMWxjcmUyMzV2dG9sb2poNGc0MDNlcC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbQ=="), + ) + clientSecret := getEnvOrDefault( + "PICOCLAW_GOOGLE_CLIENT_SECRET", + decodeBase64("R09DU1BYLUs1OEZXUjQ4NkxkTEoxbUxCOHNYQzR6NnFEQWY="), ) - clientSecret := decodeBase64("R09DU1BYLUs1OEZXUjQ4NkxkTEoxbUxCOHNYQzR6NnFEQWY=") return OAuthProviderConfig{ Issuer: "https://accounts.google.com/o/oauth2/v2", TokenURL: "https://oauth2.googleapis.com/token", @@ -60,6 +63,13 @@ func GoogleAntigravityOAuthConfig() OAuthProviderConfig { } } +func getEnvOrDefault(key, fallback string) string { + if v := os.Getenv(key); v != "" { + return v + } + return fallback +} + func decodeBase64(s string) string { data, err := base64.StdEncoding.DecodeString(s) if err != nil {