You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(secrets): make keyring open timeout configurable, default 30s (#845)
* feat(secrets): make keyring open timeout configurable, default 30s
Raise the keyring open/operation timeout from 10s to 30s and make it
configurable via GOG_KEYRING_OPEN_TIMEOUT (Go duration), mirroring the
existing GOG_KEYRING_LOCK_TIMEOUT.
10s is too short to satisfy an interactive macOS Keychain permission prompt
(password entry plus "Always Allow"), so a legitimate prompt times out
before it can be approved. 30s still bounds the indefinite hang the timeout
was originally added to prevent. The timeout error now points at
GOG_KEYRING_OPEN_TIMEOUT.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
* fix(secrets): scope longer keyring timeout to macOS
---------
Co-authored-by: Claude Opus 4.8 <[email protected]>
Co-authored-by: Peter Steinberger <[email protected]>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,7 @@
4
4
5
5
### Added
6
6
7
+
- Auth: make keyring open/operation timeouts configurable with `GOG_KEYRING_OPEN_TIMEOUT`, using a `30s` macOS default for permission prompts while retaining `10s` elsewhere. (#845) — thanks @malob.
7
8
- Calendar: add `create --timezone`/`--tz` to apply one IANA timezone to both event endpoints while retaining granular start/end timezone flags. (#844) — thanks @malob.
8
9
- Docs: add non-destructive `insert-image --before` and `--after` anchors while clarifying that `--at` replaces its placeholder. (#839) — thanks @sebsnyk.
9
10
- Slides: allow `insert-image` and `replace-slide` to use public HTTPS image URLs without temporary Drive sharing. (#825) — thanks @sebsnyk.
- Legacy key format: `token:<email>` (migrated on first read)
113
113
- Stored payload is JSON (refresh token + metadata like OIDC subject, current email, selected services/scopes).
114
114
- Email is treated as display/contact state; Google's OIDC `sub` is used to detect the same account after an email rename and migrate aliases/defaults/client mappings on reauthorization.
115
-
-macOS Keychain operations are bounded by a timeout so non-surfacing permission prompts return actionable guidance instead of hanging indefinitely.
115
+
-Keyring operations are bounded by a timeout (default `30s` on macOS and `10s` elsewhere, configurable via `GOG_KEYRING_OPEN_TIMEOUT`) so non-surfacing permission prompts and unresponsive backends return actionable guidance instead of hanging indefinitely.
116
116
- Fallback: if no OS credential store is available, keyring may use its encrypted "file" backend:
117
117
- Directory: `$(os.UserConfigDir())/gogcli/keyring/` (one file per key; gog-managed key names are encoded for portable filenames)
118
118
- Password: prompts on TTY; for non-interactive runs set `GOG_KEYRING_PASSWORD`
@@ -169,6 +169,7 @@ Environment:
169
169
-`GOG_KEYRING_PASSWORD=...` (used when keyring falls back to encrypted file backend in non-interactive environments)
170
170
-`GOG_KEYRING_BACKEND={auto|keychain|file}` (force backend; use `file` to avoid Keychain prompts and pair with `GOG_KEYRING_PASSWORD` for non-interactive)
-`GOG_KEYRING_OPEN_TIMEOUT=30s` (max time to wait for a keyring open/operation — e.g. a macOS Keychain permission prompt — before failing; Go duration, default `30s` on macOS and `10s` elsewhere)
172
173
-`GOG_TIMEZONE=America/New_York` (default output timezone; IANA name or `UTC`; `local` forces local timezone)
0 commit comments