Points de contrôle
A point de contrôle demande l'approbation d'une action d'un seul agent. Vous en créez une avant que l'action ne s'exécute ; Maetra l'évalue contre votre actif politiques et retourne une décision - immédiatement pour des résultats rapides, ou après une réponse humaine.
Cycle de vie#
create ─▶ evaluate ─┬─▶ approved / rejected / blocked (terminal, signed)
└─▶ pending ─▶ (human decides) ─▶ approved / rejected
└─▶ (timeout) ─▶ expired
| État | Signification |
|---|---|
en attente | En attente d'une décision humaine. Sondage pour le résultat. |
approuvé | Autorisé. A decision_token est émis. |
rejected | Un examinateur a refusé. |
bloqué | Une politique l'a bloquée automatiquement (pas besoin d'être humain). |
expired | Aucune décision avant l'expiration du délai. |
cancelled | Annulé avant résolution. |
Seulement approuvé les décisions peuvent continuer à faire l'objet d'une autorisation d'exécution à usage unique.
Créer un point de contrôle#
POST /v1/checkpoints — demande une portée govern:checkpoints:write.
Évaluation synchrone : une politique de voie rapide peut renvoyer une décision finale dans la même réponse; sinon vous obtenez une en attente checkpoint pour le scrutin.
Politiques exactes et renseignement décisionnel
/v1/checkpoints utilise les politiques actives configurées dans Govern. Une politique peut utiliser des conditions exactement sauvegardées, ou elle peut utiliser Renseignements sur la décision de l'agent de l'IA évaluer le risque d'exécution.
C'est vrai. pas envoyer un decision_intelligence drapeau sur la demande de contrôle. Permettre l'information décisionnelle sur la politique dans le tableau de bord. L'appel API reste le même ; Maetra applique le mode politique et retourne la même forme de décision de point de contrôle.
Organisme de demande
| Champ | Type | Requis | Désignation des marchandises |
|---|---|---|---|
action | chaîne de caractères | ✓ | Le nom de l'action, p. ex. transfer_funds. |
payload | objet | Détails structurés de l'action. | |
agent_name | chaîne de caractères | Appelable à lecture humaine (utiliser lorsque l'agent n'est pas enregistré). | |
agent_id | chaîne de caractères | Numéro d'identification de l'agent enregistré (voir Agents). | |
context | chaîne de caractères | Contexte en texte libre pour les évaluateurs. | |
reasoning | chaîne de caractères | Le raisonnement de l'agent. | |
autonomy_level | chaîne de caractères | Niveau d'autonomie des agents, L0–L5. | |
policy_ids | chaîne de caractères[] | Restreindre l'évaluation à ces politiques d'intelligence exacte ou décisionnelle. | |
policy_group_ids | chaîne de caractères[] | Restreindre l'évaluation à ces groupes stratégiques. | |
timeout_seconds | entier | Plafond horaire pour une décision humaine. | |
target | objet | Compte, ressource ou fournisseur que l'action aura une incidence. | |
task_authorization | objet | Identification des tâches, des révisions et des actions extérieures qui ont autorisé les travaux. | |
runtime | objet | Noms d'outils et de modèles et versions utilisés pour proposer l'action. | |
executor_audience | chaîne de caractères | Service autorisé à consommer la capacité approuvée. |
curl -X POST "https://api.maetra.io/v1/checkpoints" \
-H "Authorization: Bearer $MAETRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "delete_customer",
"agent_name": "ops-agent",
"payload": {
"customer_id": "cus_41ab"
},
"reasoning": "GDPR erasure request #8821."
}'
Avec un agent enregistré
L'appel ci-dessus utilise agent_name parce que l'agent n'est pas enregistré — le cas commun. Si l'agent est enregistrés, passez son agent_id à la place (ou à côté agent_name) donc le point de contrôle lui est attribué :
{
"action": "delete_customer",
"agent_id": "agt_5Ab2",
"payload": { "customer_id": "cus_41ab" },
"reasoning": "GDPR erasure request #8821."
}
Portée de la politique avec identité d'agent optionnelle
agent_id est facultatif pour /v1/checkpointsC'est vrai. Lorsque vous n'envoyez que agent_nameGovern évalue toujours l'action.
Pour l'évaluation automatique des politiques actives:
| Demande d'identité | Politiques envisagées |
|---|---|
Enregistré agent_id | Politiques à l'échelle de l'organisation, plus les politiques attribuées à cet agent enregistré. |
agent_name correspondant à un agent enregistré | Politiques à l'échelle de l'organisation, plus les politiques attribuées à cet agent enregistré. |
Inconnu ou non enregistré agent_name | Politiques à l ' échelle de l ' Organisation seulement. Les politiques spécifiques à l'agent ne s'exécutent pas accidentellement. |
| Pas d'identité d'agent | Politiques à l ' échelle de l ' Organisation seulement. |
Utilisation agent_id pour une attribution stable. Utilisation agent_name pour les agents API ou MCP qui n'ont pas encore été enregistrés. Si vous passez policy_ids ou policy_group_ids, Maetra évalue cette sélection explicite. La sélection peut inclure des politiques précises ou des politiques d'intelligence décisionnelle.
Réponse
{
"checkpoint_id": "cp_7Yh2Qa",
"agent_id": null,
"agent_name": "ops-agent",
"status": "pending",
"reason": null,
"decision_token": null,
"expires_at": "2026-07-07T12:05:00.000Z",
"evals": [
{ "policy_name": "Destructive actions", "status": "pending", "quorum_required": 2, "quorum_met": 0, "pool_size": 4 }
]
}
| Champ | Type | Désignation des marchandises |
|---|---|---|
checkpoint_id | chaîne de caractères | La carte d'identité du poste de contrôle. |
agent_id / agent_name | chaîne de caractères | null | L'identité de l'appelant que vous avez fournie. |
status | enum | en attente, approuvé, rejected, expired, bloqué, cancelled. |
reason | chaîne de caractères | null | Raison humaine ou politique, quand elle est disponible. |
decision_token | chaîne de caractères | null | JWT Signé prouvant une décision finale — voir Jetons de décision. |
action_envelope / action_envelope_hash | objet / chaîne | Proposition exacte et reliure canonique SHA-256. |
policy_versions / policy_digest | tableau / chaîne | Les versions exactes de la politique utilisées pour la décision. |
decision_token_expires_at | chaîne de caractères | null | Expiration de la capacité de décision signée à usage unique. |
execution_expected_at / effect_expected_at | chaîne de caractères | null | Les dates limites utilisées pour faire ressortir les preuves manquantes du cycle de vie. |
expires_at | chaîne de caractères | null | péremption ISO 8601. |
evals | tableau | Détail de l'évaluation par politique (ci-dessous). |
Objet Eval: policy_id, policy_name, applicability, status, quorum_required, quorum_met, pool_size.
Obtenez un point de contrôle (sondage froid)#
GET /v1/checkpoints/{id} — champ d'application govern:checkpoints:readC'est vrai. Retourne l'état actuel sans attendre. Garder ≥ 1 seconde entre les sondages du même point de contrôle; préférer le long-poll ci-dessous.
curl "https://api.maetra.io/v1/checkpoints/cp_7Yh2Qa" \
-H "Authorization: Bearer $MAETRA_API_KEY"
Attendez une décision (long-poll)#
GET /v1/checkpoints/{id}/wait — champ d'application govern:checkpoints:readC'est vrai. Maintient la connexion ouverte jusqu'à ce que le point de contrôle change d'état ou que la cale s'écoule. La façon efficace d'attendre un humain.
- Demande
timeout: tenir les secondes,1–55(par défaut)50). 200— changé; le corps est le nouvel état.202— pas de changement; reconnecter.
curl "https://api.maetra.io/v1/checkpoints/cp_7Yh2Qa/wait?timeout=50" \
-H "Authorization: Bearer $MAETRA_API_KEY"
Débit recommandé#
POST /v1/checkpoints.- Si
statusest déjà terminal, agir dessus (et vérifier le jeton). - Si
en attente, pollinisation longue/waitjusqu'au terminal. - À
approuvé, vérifier le jeton de décision, puis la consommer à travers autorisation d'exécution immédiatement avant d'agir. Enregistrez chaque tentative et vérifiez l'effet. Sur quoi que ce soit d'autre, ne joue pas.