Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
yasserstudio avatar

Gpc Troubleshooting

  • 26 installs
  • 1 repo stars
  • Updated August 1, 2026
  • yasserstudio/gpc-skills

Helps with ai & agent building tasks.

About

gpc-troubleshooting is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.

  • gpc-troubleshooting
  • AI & Agent Building
  • AI-coding skill

Gpc Troubleshooting by the numbers

  • 26 all-time installs (skills.sh)
  • Ranked #9,699 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yasserstudio/gpc-skills --skill gpc-troubleshooting

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs26
repo stars1
Last updatedAugust 1, 2026
Repositoryyasserstudio/gpc-skills

What it does

Helps with ai & agent building tasks.

Files

SKILL.mdMarkdownGitHub ↗

gpc-troubleshooting

Unified debugging guide for all GPC errors, exit codes, and common issues.

When to use

  • GPC command fails with an error code
  • gpc doctor reports issues
  • CI pipeline fails with a GPC step
  • Unexpected behavior or output
  • Need to interpret exit codes
  • Need to enable verbose/debug output

Inputs required

  • Error message or exit code — what GPC reported
  • Command that failed — the full command that was run
  • Environment — local vs CI, OS, Node.js version

Procedure

0. Quick diagnosis

# Check GPC health
gpc doctor

# Get version info
gpc --version

# Run failing command with verbose output
GPC_DEBUG=1 gpc <failing-command>

# Get error as JSON for parsing (also: --output csv, --output tsv since v0.9.68)
gpc <failing-command> --json

Read: references/exit-codes.md for the complete exit code reference.

1. Exit codes

CodeCategoryMeaning
0SuccessCommand completed successfully
1ConfigConfiguration error (missing .gpcrc.json, invalid fields)
2UsageInvalid arguments or flags
3AuthAuthentication failure (expired token, invalid key, no credentials)
4APIGoogle Play API error (403, 404, 408, 409, rate limit)
5NetworkConnection failure, DNS error, timeout
6ThresholdVitals threshold breached (used in CI gating)
10PluginPlugin permission validation error

2. Authentication errors (exit code 3)

Read: references/error-catalog.md for the full error catalog.

ErrorCauseFix
AUTH_FAILEDInvalid or corrupted credentialsRe-run gpc auth login --service-account <key.json>
AUTH_EXPIREDToken expired and refresh failedRe-authenticate; check network/proxy
AUTH_NO_CREDENTIALSNo auth configuredRun gpc auth login or set GPC_SERVICE_ACCOUNT
AUTH_INVALID_KEYMalformed service account JSONRe-download key from Google Cloud Console
AUTH_KEYCHAIN_ERROROS keychain access deniedGrant keychain access or use env var auth
# Check current auth status
gpc auth status

# Re-authenticate
gpc auth login --service-account ~/path/to/key.json

# Bypass keychain with env var
export GPC_SERVICE_ACCOUNT=$(cat ~/path/to/key.json)

3. API errors (exit code 4)

ErrorHTTPCauseFix
API_FORBIDDEN403Insufficient permissionsGrant required roles in Play Console
API_NOT_FOUND404App, track, or resource doesn't existVerify package name, track name, or resource ID
API_CONFLICT409Edit already in progressWait and retry; another edit may be open
API_RATE_LIMITED429Too many requestsGPC auto-retries; increase GPC_BASE_DELAY
API_REQUEST_TIMEOUT408Request timed outGPC auto-retries with exponential backoff
API_SERVER_ERROR5xxGoogle server issueRetry later; check Google status dashboard
EDIT_CONFLICT409Concurrent edit from another tool/userOnly one edit at a time; check if Fastlane or Play Console has an open edit
API_DUPLICATE_VERSION_CODE409Version code already uploadedIncrement versionCode in build.gradle and rebuild
API_VERSION_CODE_TOO_LOW400Version code lower than currentVersion code must increase per track
API_PACKAGE_NAME_MISMATCH400applicationId doesn't match target appVerify applicationId matches target app
API_APP_NOT_FOUND404App not in developer accountVerify package name and developer account
API_INSUFFICIENT_PERMISSIONS403Service account missing permissionsGrant required roles in Play Console → Settings → API access
API_CHANGES_NOT_SENT_FOR_REVIEW400/403App has rejected update, requires review flagAdd --changes-not-sent-for-review flag to the command
API_CHANGES_ALREADY_IN_REVIEW400Changes already in review, new commit would silently cancelUse --error-if-in-review to prevent silent cancellation
API_EDIT_EXPIRED410The open edit session has expired (edits expire after ~30 minutes of inactivity)GPC now includes a clear API_EDIT_EXPIRED message with a suggestion to retry the command. The command will automatically create a fresh edit on retry.
API_ROLLOUT_DECREASE_FORBIDDEN400Staged rollout percentage can only be increased, not decreasedTo stop a rollout, use gpc releases rollout halt --track production. To continue, use gpc releases rollout increase with a higher percentage.
# Check if an edit is stuck
gpc apps list --json

# API errors include suggestion field
gpc releases upload app.aab --track beta --json 2>&1 | jq '.error'

4. Network errors (exit code 5)

ErrorCauseFix
NETWORK_ERRORConnection failedCheck internet; check proxy settings
NETWORK_TIMEOUTRequest timed outIncrease GPC_TIMEOUT (default 30000ms)
NETWORK_DNSDNS resolution failedCheck DNS settings; try Google DNS (8.8.8.8)
NETWORK_SSLSSL/TLS handshake failedSet GPC_CA_CERT for custom CA; check proxy
# Increase timeout for large uploads
export GPC_TIMEOUT=120000

# Configure retry behavior
export GPC_MAX_RETRIES=5
export GPC_BASE_DELAY=2000
export GPC_MAX_DELAY=30000

# Corporate proxy
export HTTPS_PROXY=http://proxy.corp:8080

# Custom CA certificate
export GPC_CA_CERT=/path/to/ca-cert.pem

5. Configuration errors (exit code 1)

ErrorCauseFix
CONFIG_MISSINGNo .gpcrc.json or env varsRun gpc setup (v0.9.68+) or gpc config init
CONFIG_INVALIDMalformed .gpcrc.jsonValidate JSON syntax
CONFIG_INVALID_JSONConfig file contains syntax errors (v0.9.80+)Run `cat <file> \
CONFIG_INVALID_KEYKey is empty, malformed, or a reserved name (v0.9.80+)Use a valid alphanumeric profile/key name
CONFIG_APP_MISSINGNo app specifiedSet with gpc config set app or --app flag

Config precedence fix (v0.9.81+): Before v0.9.81, an active profile would silently win over GPC_SERVICE_ACCOUNT/GPC_APP env vars and the --service-account/--app flags. This was a bug. Since v0.9.81, the documented precedence is enforced: flags override env vars, env vars override the active profile, the active profile overrides defaults. If env vars appear to be ignored, check whether an active profile is set with gpc config list and either update or deactivate it.

# Initialize config
gpc config init

# Set required values
gpc config set app com.example.app

# Check current config
gpc config list

6. Upload and release errors

ErrorCauseFix
INVALID_BUNDLEAAB is corrupted or wrong formatRebuild the AAB; run gpc validate first
VERSION_CODE_CONFLICTVersion code already usedIncrement versionCode in build.gradle
RELEASE_NOT_FOUNDNo release on the specified trackCheck track name; use gpc releases list --track <track>
ROLLOUT_INVALIDInvalid rollout percentageUse 0-100 (not 0.0-1.0); use --rollout 10 not --rollout 0.1
PROMOTE_NO_SOURCESource track has no release to promoteUpload to source track first
UPLOAD_CHUNK_FAILEDChunk could not be sent after retriesCheck network; increase GPC_MAX_RETRIES or GPC_UPLOAD_TIMEOUT
UPLOAD_NO_COMPLETIONAll bytes sent but no completion responseRetry upload; check GPC_UPLOAD_TIMEOUT
UPLOAD_INITIATE_FAILEDSession initiation failedCheck auth and permissions; retry
UPLOAD_NO_SESSION_URINo Location header in initiation responseAPI error; retry or check service account permissions
UPLOAD_SESSION_NOT_FOUNDSession expired (404)Start a new upload session
UPLOAD_SESSION_EXPIREDSession gone (410)Start a new upload session
UPLOAD_INVALID_CHUNK_SIZEChunk size not multiple of 256 KBSet GPC_UPLOAD_CHUNK_SIZE to a multiple of 262144 (256 KB)
EDIT_VALIDATE_FAILEDTransient validate/commit failure after uploadAuto-retried with multi-retry guard (15s, 30s, 45s) since v0.9.77; if persistent, check bundle status
REVIEW_SKIPPEDInternal track commit completed without entering Google review queueExpected behavior. The internal track does not require review. GPC sets reviewSkipped: true in structured JSON output (v0.9.79+) to confirm the commit went through immediately.
# Validate before uploading
gpc validate app.aab

# Check existing releases
gpc releases list --track internal
gpc releases list --track beta

# Preview upload
gpc releases upload app.aab --track beta --dry-run
Commit rejection: reviewPending structured output (v0.9.79+)

When edits.commit is rejected because Google requires review, the --json output includes a structured result instead of a plain error:

{
  "reviewPending": true,
  "nextStep": "Your changes are under Google review. Check Play Console for status or use --changes-not-sent-for-review to bypass review for non-reviewed tracks."
}

CI pipelines can key on reviewPending === true to decide whether to wait, notify, or exit. The nextStep field always contains human-readable guidance on what to do next.

7. Vitals threshold breach (exit code 6)

Exit code 6 is not an error — it's an intentional signal that a vitals metric exceeded the threshold. Used for CI gating.

# This exits 6 if crash rate > 2.0%
gpc vitals crashes --threshold 2.0

# Check the actual value
gpc vitals crashes --json | jq '.crashRate'

# In CI, use exit code to gate promotion
gpc vitals crashes --threshold 1.5 && gpc releases promote --from beta --to production

8. Plugin errors (exit code 10)

ErrorCauseFix
PLUGIN_INVALID_PERMISSIONThird-party plugin declares unknown permissionCheck valid permissions in plugin-sdk docs
Plugin not loadingNot in config or not approvedAdd to plugins and approvedPlugins in .gpcrc.json
Plugin error in hookBug in plugin handlerCheck plugin logs; onError/API hooks swallow errors

Changelog generation errors (v0.9.61+)

CodeMeaningFix
CHANGELOG_NO_TAGNo v* git tag found, --from not passedCreate a tag (git tag v0.0.1) or pass --from <ref>
CHANGELOG_BAD_REF--from or --to ref doesn't existRun git rev-parse --verify <ref> to check
CHANGELOG_LOCALES_REQUIRED--target play-store passed without --locales (v0.9.62+)Pass --locales en-US,fr-FR or --locales auto
CHANGELOG_LOCALES_INVALIDOne or more --locales are not valid BCP 47 (v0.9.62+)Use Play Store-supported codes like en-US, fr-FR, de-DE
CHANGELOG_LOCALES_AUTO_NO_APP--locales auto without an authenticated client + app (v0.9.62+)Pass --app <package> or set config.app, check credentials
CHANGELOG_FETCH_FAILEDGitHub API unreachable or returned an error (v0.9.80+)Check network; view changelog at the docs site
CHANGELOG_VERSION_NOT_FOUNDRequested version not found in GitHub releases (v0.9.80+)Run gpc changelog --limit 10 to see available versions
WATCH_WEBHOOK_FAILEDWebhook endpoint returned non-2xx (v0.9.80+)Check the webhook URL and server status
CHANGELOG_LOCALES_EMPTY--locales auto returned zero locales (v0.9.62+)Create at least one Play Store listing, or pass explicit --locales
RELEASE_NO_DRAFT--apply found no draft release on the target track (v0.9.64+)Create a draft release first (gpc releases upload --status draft)
BUNDLE_PROCESSING_TIMEOUTAAB upload completed but bundle not processed within ~86s (v0.9.64+, extended v0.9.77)Retry the upload, or use --status draft and commit later; if persistent, check bundle size and Google's server status

9. Debug mode

Enable verbose output for any command:

# Debug environment variable
GPC_DEBUG=1 gpc releases upload app.aab --track beta

# JSON output for machine parsing
gpc releases upload app.aab --track beta --json

# Combine for maximum detail
GPC_DEBUG=1 gpc releases upload app.aab --track beta --json 2>debug.log

10. Retryable HTTP status codes

GPC automatically retries the following HTTP status codes with exponential backoff:

  • 408 — Request Timeout
  • 429 — Too Many Requests (rate limited)
  • 5xx — Server errors (500, 502, 503, etc.)

Configure retry behavior:

export GPC_MAX_RETRIES=5        # Default: 5
export GPC_BASE_DELAY=1000      # Initial delay in ms
export GPC_MAX_DELAY=15000      # Max delay in ms
export GPC_UPLOAD_TIMEOUT=300000  # Upload timeout in ms (5 min)

Verification

  • gpc doctor passes all checks
  • Failing command now succeeds or shows a clear, actionable error
  • Exit code matches the expected category
  • --json output includes error.code, error.message, and error.suggestion

Failure modes / debugging

SymptomLikely CauseFix
gpc doctor fails on authCredentials not configuredRun gpc setup (v0.9.68+) or gpc auth login
gpc doctor fails on APIService account lacks API accessEnable Google Play Developer API in GCP
gpc doctor quota warning>80% of daily or per-minute API quota usedReduce request frequency or request quota increase from Google (v0.9.71+)
gpc doctor plugin errorA configured plugin fails to loadCheck plugin package version, reinstall, or remove from config (v0.9.71+)
gpc doctor --verify mismatchLocal keystore differs from Play signing certRegister local key in Play Console or use Play App Signing (v0.9.75+)
All commands timeoutNetwork/proxy issueCheck HTTPS_PROXY, GPC_CA_CERT, GPC_TIMEOUT
Commands work locally, fail in CIMissing env vars in CISet GPC_SERVICE_ACCOUNT and GPC_APP in CI secrets; run gpc setup --auto (v0.9.68+)
Env vars GPC_SERVICE_ACCOUNT / GPC_APP seem to be ignoredActive profile overriding env vars (pre-v0.9.81 bug)Upgrade to v0.9.81+. Check active profile with gpc config list; env vars and flags now correctly override the profile.
JSON output has no suggestionUnexpected error typeFile a bug — all errors should have suggestions

Related skills

  • gpc-setup — initial auth and config setup
  • gpc-ci-integration — CI-specific troubleshooting
  • gpc-vitals-monitoring — understanding threshold breaches
  • gpc-plugin-development — debugging plugin issues

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.