Una app Copilot con Read-only può comunque consumare crediti

Tech
Visualizzazioni 3

Un agente notturno può dipendere dal login di una persona. Il 27 ottobre GitHub ha aperto l’anteprima pubblica dell’autenticazione tra server per GitHub Apps installate nelle organizzazioni con Copilot SDK. Il servizio usa l’identità dell’installazione. La sorpresa è che Read-only può autorizzare richieste a pagamento.

Sola lettura non significa gratuito

L’app riceve il permesso organizzativo Copilot Requests con Read-only e usa un token di installazione di breve durata. Utilizzo e fattura spettano all’organizzazione proprietaria dell’installazione. Qui il permesso consente richieste che consumano crediti AI.

Confronto originale: app organizzativa con Copilot Requests: Read-only sopra; Actions con GITHUB_TOKEN e copilot-requests: write sotto. Non è una schermata né un risultato eseguito.
Confronto originale: app organizzativa con Copilot Requests: Read-only sopra; Actions con GITHUB_TOKEN e copilot-requests: write sotto. Non è una schermata né un risultato eseguito.

Immaginiamo un’azienda con un’app di analisi e una di riepilogo documenti. Entrambe possono avere soli diritti di lettura e generare costi. Non modificare file e usare capacità del modello sono compatibili. Cambia il titolare dell’attività, non il costo dell’inferenza.

Actions e i server esterni seguono vie diverse

Un servizio esterno o un altro CI passa il token a un’opzione esplicita del SDK come gitHubToken. Sono ammesse solo installazioni di organizzazione, non personali o enterprise. La disponibilità delle installazioni enterprise discussa in precedenza ha un perimetro diverso.

Nei repository di organizzazione GitHub Actions può usare GITHUB_TOKEN. Questa via richiede copilot-requests: write nel YAML e la policy Allow use of Copilot CLI billed to the organization. L’autenticazione dell’app installata non richiede quella policy. Read-only e write appartengono a percorsi distinti.

Dopo un’ora l’identità deve continuare a funzionare

Il token scade dopo un’ora. Il sostituto va consegnato al processo attivo. La documentazione indica di riavviare il client figlio con il nuovo token, oppure il runtime ospite per esecuzioni integrate o già esistenti. Modificare un file non prova che il processo abbia recepito il valore.

useLoggedInUser: false disabilita la ricerca automatica delle credenziali, inclusi i token nelle variabili d’ambiente. Occorre quindi passare il token esplicitamente al SDK. Un successo sul portatile e un errore sul server possono rivelare un ripiego involontario sul login personale.

Cronologia ipotetica: generare e consegnare il sostituto prima della scadenza di un’ora. Illustrazione originale, non telemetria.
Cronologia ipotetica: generare e consegnare il sostituto prima della scadenza di un’ora. Illustrazione originale, non telemetria.

Attribuzione per app, budget organizzativo

I proprietari trovano l’utilizzo nei CSV tramite organization e app_client_id. Il confronto con client_id nell’API delle installazioni identifica app_slug. La vista web AI non offre attualmente questa distinzione. Non esistono budget per singola app e un budget con soli avvisi non blocca il consumo.

Sospendere o disinstallare l’installazione blocca anche gli altri accessi alle risorse dell’organizzazione. Il vantaggio è una responsabilità più leggibile entro le policy di modelli e spesa. Separare il servizio da una persona richiede di trasferire anche rinnovo dei token e titolarità dei costi.

Fonti ufficiali

GitHub Changelog · 2026-10-27

GitHub Docs · Server-to-server authentication

GitHub Docs · Manage app Copilot access