Zum Hauptinhalt springen
connic

Sensible Tool-Aufrufe anhalten.
Erst nach Freigabe ausführen.

Der Run wartet mit den exakten Parametern, bis jemand freigibt oder ablehnt. Danach macht der Agent genau dort weiter, wo er angehalten hat.

Run Details4b1e9a0c7d52 Awaiting Approval
Triggered by support-inbox
Approval RequiredApproveReject

Check the order history before you decide.

Toolrefunds.issue_refund
Parameters
{
  "order_id": "ORD-48213",
  "amount": 349,
  "currency": "EUR",
  "reason": "Damaged on arrival"
}
Input

ORD-48213 arrived broken. Please refund the 349 EUR.

Kleine Erstattungen laufen durch. Große warten auf Freigabe.

Freigabepflichtige Tools stehen unter approval in der Agentendatei. Eine Bedingung wie param.amount > 200 hält nur die passenden Aufrufe an.

Bedingungen lesen den Aufruf
param liest die Argumente des Tools, context die Werte aus der Middleware. Lässt sich eine Bedingung nicht auswerten, wartet der Aufruf auf Freigabe.
Standardmäßig eine Stunde
timeout reicht von 30 Sekunden bis zu 7 Tagen.
Entscheidungen in der Testdatei
approval_decisions gibt passende Anfragen frei, lehnt sie ab oder lässt sie ablaufen. So spielt connic test beide Ausgänge vor dem Deployment durch.
agents/refund-agent.yaml
name: refund-agent
model: connic/gpt-5.6-luna
system_prompt: |
  Resolve refund requests from the support inbox.
  Look up the order before you refund or cancel anything.
tools:
  - orders.lookup_order
  - orders.cancel_order
  - refunds.issue_refund
approval:
  tools:
    - orders.cancel_order
    - refunds.issue_refund: param.amount > 200
  timeout: 3600
  message: Check the order history before you decide.
  on_rejection: continue
tests/refund-agent.yaml
tests:
  - name: approves_large_refund
    payload: "ORD-48213 arrived broken. Please refund 349 EUR."
    approval_decisions:
      - tool: refunds.issue_refund
        params: params.amount > 200
        decision: approve
    expected_result: status == "completed"

  - name: adapts_after_rejection
    payload: "ORD-48213 arrived broken. Please refund 349 EUR."
    approval_decisions:
      - tool: refunds.issue_refund
        decision: reject
        reason: Offer a replacement first
    expected_result: status == "completed"

Nach der Freigabe geht der Run genau dort weiter.

Solange die Anfrage offen ist, steht der Run auf Awaiting Approval. Beim Fortsetzen lädt connic den gespeicherten Zustand, und was schon gelaufen ist, läuft nicht noch einmal.

Freigegeben
Das Tool läuft mit genau den Parametern, die zur Prüfung vorlagen.
Abgelehnt mit on_rejection: fail
Der Standard. Der Run schlägt mit Tool 'refunds.issue_refund' was rejected und der Begründung fehl.
Abgelehnt mit on_rejection: continue
Der Agent bekommt die Begründung und entscheidet selbst, wie es weitergeht.
Abgelaufen
Zählt wie eine Ablehnung und folgt der Einstellung on_rejection des Agenten.
Run Details
#4b1e9a0c7d52 Completed
SpanData
Runrefund-agentok258104.9ms
LLM Agentrefund-agentok257918.4ms
LLM Callokconnic/gpt-5.6-luna1204.6ms
Tool Callokorders.lookup_order212.4ms
LLM Callokconnic/gpt-5.6-luna986.1ms
Tool Callokrefunds.issue_refund254316.2ms
Tool Approvedok251840.3ms
LLM Callokconnic/gpt-5.6-luna1112.7ms

Alle Anfragen in einer Queue prüfen.

Offene Anfragen stehen oben. Jede Zeile öffnet den Run mit Trace, Parametern und denselben Buttons zum Freigeben und Ablehnen.

Aus deinen eigenen Tools entscheiden
REST API und connic MCP können Anfragen auflisten, freigeben und ablehnen.
Zugriff über Berechtigungsgruppen
Berechtigungsgruppen legen fest, wer Freigaben sehen, entscheiden oder konfigurieren darf.
Jede Entscheidung dokumentiert
Das Audit-Log hält fest, wer entschieden hat, welches Tool betroffen war und mit welchen Parametern.
Approvals
2 pending
AgentToolStatusCreatedResolved ByActions
refund-agent
#4b1e9a0c7d52
refunds.issue_refundPending2 minutes agoApproveReject
refund-agent
#c07d2f81a9e3
orders.cancel_orderPending9 minutes agoApproveReject
refund-agent
#9a52e6b0d114
refunds.issue_refundApprovedabout 1 hour agomaya@example.comApproveReject
refund-agent
#e18f4c7a3b20
refunds.issue_refundRejectedabout 3 hours agojonas@example.comApproveReject
refund-agent
#57b3d9e2c6a8
orders.cancel_orderTimed Out1 day agosystemApproveReject

Der Agent fragt. Ein Mensch antwortet.

approval.inputs gibt dem Agenten ein Tool, das einen Menschen fragt, etwa nach einem Einmalcode. Die Antwort wird zum Ergebnis des Tools.

Kein Python nötig
connic baut das Tool aus dem YAML-Eintrag. Die params, die der Agent mitschickt, stehen über dem Eingabefeld.
Sensible Werte bleiben verdeckt
Mit sensitive: true ist das Feld maskiert und die Antwort verschlüsselt gespeichert. In Logs und Traces ist sie geschwärzt, das KI-Modell bekommt den Wert trotzdem.
agents/refund-agent.yaml
approval:
  tools:
    - orders.cancel_order
    - refunds.issue_refund: param.amount > 200
  inputs:
    - get_payment_code:
        prompt: Ask for the payment provider's one-time code.
        label: Payment provider code
        sensitive: true
        params:
          - order_id: str
  timeout: 3600
  message: Check the order history before you decide.
  on_rejection: continue
Response RequiredSubmit and continueReject

Check the order history before you decide.

Toolget_payment_code
Context
{ "order_id": "ORD-48213" }
Payment provider code
••••••

Jede Anfrage an dein eigenes Review-Tool schicken.

Standardmäßig bekommt dein Team eine E-Mail und eine Benachrichtigung in der App. Bei Enterprise leiten Webhook-Kanäle die Anfragen je Agent an deinen eigenen Endpunkt.

POST https://ops.example.com/hooks/connic
Content-Type:
application/json
X-Connic-Signature:
3f9a1c07e2b4...
X-Connic-Timestamp:
1791884467
{
  "project_id": "b4c3d2e1-...",
  "channel_id": "c5d4e3f2-...",
  "channel_name": "Support leads",
  "type": "approval_requested",
  "approval_id": "a1b2c3d4-...",
  "run_id": "e5f6a7b8-...",
  "agent_name": "refund-agent",
  "tool_name": "refunds.issue_refund",
  "tool_params": {
    "order_id": "ORD-48213",
    "amount": 349,
    "currency": "EUR",
    "reason": "Damaged on arrival"
  },
  "message": "Check the order history before you decide.",
  "timeout": 3600,
  "environment_id": "f9e8d7c6-...",
  "environment_name": "Production",
  "created_at": "2026-10-13T09:41:07.512033"
}

Häufig gestellte Fragen

Die Anfrage läuft nach dem timeout im approval-Block ab, standardmäßig nach einer Stunde und spätestens nach sieben Tagen. Danach zählt sie wie eine Ablehnung: Mit on_rejection: fail schlägt der Run fehl, mit continue erfährt der Agent, dass das Tool nicht gelaufen ist.

Ja. Schreib eine Bedingung wie param.amount > 200 and not context.is_admin hinter den Tool-Namen. param.<key> liest die Argumente des Tools, context.<key> die Werte aus deiner Middleware. Lässt sich die Bedingung nicht auswerten, etwa weil ein Argument fehlt, wartet der Aufruf auf Freigabe.

Nein. Beim Fortsetzen lädt connic die gespeicherte Unterhaltung und den Zustand der Tools. Was schon gelaufen ist, läuft also nicht noch einmal, und ruft der Agent mehrere freigabepflichtige Tools auf, hält jedes den Run einzeln an.

Mitglieder mit approvals.view bekommen standardmäßig eine E-Mail und eine Benachrichtigung in der App und können das in ihren Benachrichtigungseinstellungen ändern. Entscheiden darf, wer approvals.decide über eine Berechtigungsgruppe hat. Enterprise-Projekte leiten Anfragen zusätzlich je Agent an Webhook-Kanäle.

Ja. Über die REST API kannst du Anfragen auflisten, freigeben und ablehnen, der API Key braucht dafür approvals.decide. connic MCP hat die Tools approve_tool_call und reject_tool_call, und ein Webhook-Kanal schickt jede neue Anfrage an dein eigenes Review-Tool.

Ja. Mit approval_decisions legst du in der Testdatei fest, ob passende Anfragen freigegeben oder abgelehnt werden oder in den Timeout laufen. Ablehnungen folgen dabei der on_rejection-Einstellung des Agenten. Mit strict_approval_decisions schlägt ein Testfall fehl, wenn eine Anfrage keine passende Entscheidung findet oder eine Entscheidung übrig bleibt.