gplay recovery create
Create a DRAFT app recovery action targeting users impacted by a bad APK
versionCode. A draft is staged but NOT yet pushed to any user — activate it
later with gplay recovery deploy <id> (which requires --confirm).
Pass --version-code (the bad version) and at least one audience selector: --all-users, --regions <CC,CC>, or --sdk-levels <N,N>. The recovery uses a remote in-app update by default (--remote-in-app-update).
A draft is harmless, so create needs no --confirm; use --dry-run to validate inputs without any HTTP call. GPLAY_READONLY still refuses it (exit 4).
[experimental] — the surface may still evolve (ADR-0010).
gplay recovery create [flags]| Flag | Description |
|---|---|
--all-users | target all users on the bad versionCode |
--dry-run | validate inputs and resolve the target without any HTTP call |
--output string | output format: table, json, or markdown (default: auto — table on TTY, json in pipes/CI) |
--package string | Android package name (overrides .gplay/config.json pin) |
--regions strings | target users in these CLDR region codes (e.g. US,FR) |
--remote-in-app-update | use a remote in-app update (the only recovery type Play models today) (default true) |
--sdk-levels int64Slice | target users on these Android SDK levels (e.g. 30,31) (default []) |
--version-code int | the bad APK versionCode the recovery targets (required) |
Global flags
Section titled “Global flags”| Flag | Description |
|---|---|
--account string | name of a stored Account to use (overrides env and active Account) |
--retry int | retry transient failures (transport errors, 5xx, 429) up to N times with exponential backoff (default: 0, no retry) |
--service-account string | path to a service-account JSON, or inline JSON content (overrides --account, env, and active Account) |
--timeout duration | per-request API timeout, e.g. 30s or 2m (default: 60s for control-plane calls, none for uploads) |
-v, --verbose | log flow steps to stderr (info level) |