What happens
Running github setup against an org where GitHub Apps are already installed prompts for a .pem file path for each role:
App <slug> exists but its private key is missing.
Do you already have the .pem file? [Y/n]
What should happen
github setup uses OIDC mint mode (--mint-url). The mint holds all PEMs. When an app is already installed, it should be reused silently without prompting for a local key file.
Context
runGitHubSetupPerOrg calls runAppSetup with empty mintProject, so no gcf.Provisioner is created. The fallback secretExists callback checks GitHub repo secrets (FULLSEND_<ROLE>_APP_PRIVATE_KEY), which don't exist in OIDC-mint-mode installs (PEMs are in Secret Manager). The check returns false → handleExistingApp → recoverPEM → interactive prompt.
Relevant code
internal/cli/github.go:502 — runAppSetup call with empty mintProject
internal/cli/admin.go:1346–1357 — GitHub-secrets secretExists fallback
internal/appsetup/appsetup.go:580–611 — handleExistingApp → recoverPEM
Mirrored from fullsend-ai#2163
What happens
Running
github setupagainst an org where GitHub Apps are already installed prompts for a.pemfile path for each role:What should happen
github setupuses OIDC mint mode (--mint-url). The mint holds all PEMs. When an app is already installed, it should be reused silently without prompting for a local key file.Context
runGitHubSetupPerOrgcallsrunAppSetupwith emptymintProject, so nogcf.Provisioneris created. The fallbacksecretExistscallback checks GitHub repo secrets (FULLSEND_<ROLE>_APP_PRIVATE_KEY), which don't exist in OIDC-mint-mode installs (PEMs are in Secret Manager). The check returns false →handleExistingApp→recoverPEM→ interactive prompt.Relevant code
internal/cli/github.go:502—runAppSetupcall with emptymintProjectinternal/cli/admin.go:1346–1357— GitHub-secretssecretExistsfallbackinternal/appsetup/appsetup.go:580–611—handleExistingApp→recoverPEMMirrored from fullsend-ai#2163