Secrets

Utilisez secrets pour fournir un identifiant à vos outils, par exemple une clé API tierce, sans inclure sa valeur dans votre code. Déclarez chaque secret une seule fois, par son nom, et associez-le à un secret dans Mistral Secrets Manager. Une fois déployé, l'agent le reçoit sous forme de variable d'environnement. Si un secret manque, une erreur survient avant le démarrage de la session, plutôt qu'en cours de session.

Chaque type d'identifiant dispose de son propre mécanisme :

Vous souhaitez…UtilisezPage
Fournir une clé API à un outilsecrets= sur l'AgentCette page
Appel à GitHub depuis une commande de la sandboxheader_bindings= sur la sandboxAssociation d'en-têtes
Appel à un connecteur de l'utilisateur, comme GmailLa connexion de l'utilisateurConnexion
Appel à votre propre serveur MCP avec un tokenauth_header_env_vars=Transmettre un identifiant

Dans cet exemple, l'agent de contrôle des paiements vérifie un bénéficiaire à l'aide de l'API d'un prestataire :

import asyncio
import os

from mistralai import agents


@agents.tool(annotations=agents.ToolAnnotations(read_only_hint=True))
async def screen_beneficiary(name: str) -> str:
    """Screen a payment beneficiary against the sanctions lists."""
    api_key = os.environ["SCREENING_API_KEY"]  # set from the secret when deployed
    return f"{name}: no match"  # call your screening vendor with api_key


payment_reviewer = agents.Agent(
    model="mistral-large-4",
    name="payment-reviewer",
    instructions="Screen the beneficiary. Reply in one sentence.",
    tools=[screen_beneficiary],
    secrets={
        "SCREENING_API_KEY": agents.MistralSecret.workspace("screening-api-key", worker_env=True),
    },
)


async def main() -> None:
    state = await payment_reviewer.run("Screen the beneficiary Jane Roe.")
    if isinstance(state, agents.Completed):
        print(state.text)


if __name__ == "__main__":
    asyncio.run(main())
Jane Roe screened against the sanctions lists with **no match** — she is clear.

Pour l'exécuter dans votre processus : SCREENING_API_KEY=... uv run python screening.py.

La clé, ici SCREENING_API_KEY, est le nom de la variable d'environnement que vos outils lisent. Chaque valeur est un agents.MistralSecret :

  • agents.MistralSecret.workspace("NAME", worker_env=True) référence le secret d'espace de travail NAME, à partir de son nom seul, tel qu'il apparaît dans la console.
  • agents.MistralSecret(worker_env=True) ne référence aucun secret dans votre code. Associez-le lors du déploiement avec agents deploy --secret-binding NAME=secret:workspace:.... Une association remplace également le secret défini par workspace(). Les environnements de préproduction et de production peuvent ainsi utiliser chacun leur propre secret sans modification du code.

Définissez worker_env=True sur chaque MistralSecret. Tout code exécuté dans l'environnement de l'agent peut lire la variable. Le SDK vous demande donc d'autoriser explicitement cet accès, et la construction de l'Agent échoue sans cette option.

Ne déclarez pas le token d'un connecteur comme secret : il ne quitte jamais la passerelle des Connecteurs.

La valeur lue par vos outils dépend du mode d'exécution de l'agent :

Mode d'exécutionSource de la valeurSi la valeur manque
agents deployLe secret de Secrets Manager désigné par --secret-binding, ou par workspace() en l'absence d'associationLe déploiement échoue
agents serveLa variable du même nom dans votre shellagents serve ne démarre pas
Dans votre processus (agent.run())La variable du même nom dans l'environnement de votre processusAucune vérification n'a lieu avant l'exécution : celle-ci se termine, et seul l'appel à l'outil échoue

La CLI ne lit pas elle-même .env. Pour charger les variables de .env pour agents serve, exécutez uv run --env-file .env agents serve.

Déployer explique comment créer le secret et l'associer lors du déploiement.

Les mécanismes de contrôle : bloquez un appel à un outil interdit par votre politique.