Sicurezza e revoca dell'accesso
Token, non password
Collegare un assistente non gli consegna mai la tua password MailInApp o una chiave API. Approvare la schermata di consenso conia un token di accesso OAuth con ambito limitato esattamente ai permessi che hai selezionato, vincolato esattamente all'account che hai scelto. I token sono stringhe casuali opache memorizzate in forma hashata — lo stesso schema che MailInApp usa già per le chiavi API per sviluppatori — quindi una lettura del database non può recuperare una credenziale utilizzabile, e revocarne uno è istantaneo invece di dover attendere una scadenza.
- Gli access token durano 1 ora.
- I refresh token durano 60 giorni e ruotano a ogni utilizzo — il vecchio smette di funzionare nel momento stesso in cui ne viene emesso uno nuovo, e se un refresh token già ruotato viene mai riutilizzato (un segnale che è trapelato), l'intera connessione viene revocata automaticamente invece del solo token in questione.
Conferma in due passaggi prima di ogni invio
Concedere campaigns:send non significa che un assistente possa inviare email ai tuoi contatti in un solo passaggio. L'invio passa sempre attraverso due chiamate separate a strumenti:
prepare_sendrisolve il tuo pubblico, applica le soppressioni, e renderizza un'anteprima reale — annotato come di sola lettura, perché non invia nulla. Restituisce il numero di destinatari, un campione di indirizzi, l'HTML renderizzato, e unconfirmationTokendi breve durata vincolato a quell'esatto progetto, oggetto e pubblico.confirm_sendrichiede quell'esatto token, più lo stesso identico progetto/oggetto/pubblico per cui è stato coniato. Qualsiasi discrepanza — un oggetto diverso, una selezione di righe diversa, un token scaduto (finestra di 10 minuti) — viene rifiutata categoricamente.
L'effetto pratico: un assistente non può inviare email senza prima mostrare cosa sta per inviare e a quante persone, e non può scambiare il pubblico o l'oggetto tra il momento in cui ti mostra l'anteprima e quello in cui invia effettivamente. Su Claude, il risultato di prepare_send viene renderizzato come una vera scheda con il proprio pulsante Conferma e invia — così l'approvazione umana è un clic su un'anteprima renderizzata, non una frase in una trascrizione di chat che un modello potrebbe convincersi a superare da solo.
Ogni invio effettuato in questo modo passa comunque attraverso le protezioni già esistenti del tuo account, in aggiunta: il limite connectorSendRecipientsMonthly del tuo piano (separato da, e molto più basso di, il tuo normale volume di invio mensile — 0 su Free), la stessa lista di soppressione controllata da ogni altro invio, e il limite mensile complessivo di invio del tuo account. Ciascuno di questi viene anche registrato come proprio record di audit.
Il contenuto non fidato è recintato, non considerato attendibile
I campi dei contatti, i corpi dei messaggi in arrivo nella casella di posta, e le risposte in testo libero dei moduli sono tutti scritti da persone diverse da te — un destinatario, o chiunque scriva alla tua casella di supporto. Gli strumenti che restituiscono questo contenuto lo racchiudono chiaramente come dato non fidato nel risultato dello strumento, così il tuo assistente lo tratta come qualcosa da leggere e riassumere, mai come un'istruzione da seguire. (Per i più tecnicamente curiosi: questo recinto vive nel risultato dello strumento, mai nella descrizione dello strumento — mettere istruzioni comportamentali in una descrizione è esattamente il tipo di superficie di prompt-injection che i revisori dei connettori respingono a vista.)
Ciò che nessuno strumento può mai raggiungere
Nessuno strumento del connettore — indipendentemente da quali scope concedi — può leggere o ruotare una chiave API, un segreto di firma webhook, una password SMTP, o un client secret OAuth per una fonte dati collegata; modificare le impostazioni di pagamento, dominio o SMTP; o gestire gli inviti al team. Queste rispecchiano esattamente le esclusioni che un collega con ruolo editor non può già raggiungere altrove in MailInApp. Nulla qui tocca Stripe o la fatturazione: anche un addebito contestato o un rimborso restano un'azione solo da dashboard.
Per conto di quale account, sempre riverificato
Una connessione è vincolata a un account al momento del consenso e non rilegge mai un header per decidere per conto di quale account operare (a differenza di una sessione dashboard autenticata che sceglie tra più aziende). Quel vincolo viene rivalidato a ogni singola chiamata rispetto alla tua appartenenza al team attuale: se vieni rimosso da un team, o il tuo ruolo cambia, la chiamata immediatamente successiva su quella connessione riflette la nuova realtà, non ciò che era vero quando hai concesso gli scope.
Revocare una connessione
Vai su Connessioni nella dashboard (/dashboard/connections). Ogni assistente che hai approvato è elencato con gli scope concessi e l'ultima chiamata effettuata; Revoca ha effetto immediato — ogni token in possesso di quell'assistente, sia di accesso che di refresh, smette di funzionare alla sua chiamata successiva. Non c'è nulla da annullare prima dal lato della piattaforma (Claude/Gemini); revocare qui è sempre sufficiente.