K0NSULT // ai-truth/ipIII
k0nsult.cloud / ai-truth / ipIII / agent-security / agent-coc

Agent Chain-of-Custody — łańcuch dowodowy działania agenta AI

Kiedy decyzję podejmuje agent AI, „co on właściwie zrobił i dlaczego" musi być odtwarzalne. Agent Chain-of-Custody (CoC) to uporządkowany, haszowany zapis każdego kroku: od promptu, przez pobrany kontekst i wywołania narzędzi, po wynik i akceptację człowieka. Ta strona opisuje zestaw pól łańcucha i pokazuje przykład syntetyczny — żeby audytor mógł prześledzić decyzję AI, a nie zgadywać.

Status: MVP (Fala 9). To specyfikacja pól łańcucha dowodowego wraz z przykładem na danych syntetycznych. Zapisywanie i podpisywanie realnego łańcucha w bazie oraz interaktywny podgląd „trace" są oznaczone ROADMAP — nie jako działająca funkcja. Zgodnie z doktryną claim ≤ proof: to, co tu widzisz, to model danych i przykład, nie żywy rejestr produkcyjny.
10 pól. Jeden odtwarzalny łańcuch decyzji AI.

Zamiast „agent tak zdecydował" — sekwencja powiązanych rekordów, w której każdy krok ma własny hash i wskazuje na poprzedni (prev_hash), tworząc łańcuch odporny na ciche podmiany. Human-approval jest jawnym polem: wiadomo, czy i kto zatwierdził działanie o skutkach.

ŁAŃCUCH: promptinputretrieved-contexttool-call + argsoutputhuman-approvaldecision (hash)

Pola łańcucha (model danych)

Każdy krok agenta zapisujemy jako rekord o poniższych polach. Kolumna Rola: audyt = element odtwarzalności decyzji · integralność = zabezpiecza łańcuch przed podmianą.

PoleOpisPrzykład (skrót)Rola
prompt Instrukcja / zadanie postawione agentowi (system + user prompt lub jego odcisk). „Przygotuj podsumowanie findings z raportu skanera dla incydentu INC-042." audyt
input Dane wejściowe dostarczone do kroku (parametry, treść dokumentu, identyfikatory). {incident_id:"INC-042", source:"zap-report.json"} audyt
retrieved_context Fragmenty pobrane przez RAG / wyszukiwanie, na których agent się oparł (źródło + odcisk). 3 chunki z evidence-package INC-042, źródła + sha256 każdego audyt
tool_call Nazwa wywołanego narzędzia/funkcji (jeśli krok użył narzędzia). ip3.get_incident_evidence audyt
args Argumenty przekazane do narzędzia — dokładnie to, z czym zostało wywołane. {id:"INC-042", fields:["findings","cvss"]} audyt
output Wynik kroku: odpowiedź modelu lub zwrot narzędzia (treść lub jej odcisk). Podsumowanie 5 findings, 1 oznaczony do eskalacji audyt
human_approval Czy krok o skutkach wymagał i uzyskał akceptację człowieka: kto, kiedy, decyzja. {required:true, by:"analyst@synthetic", verdict:"approved"} audyt
timestamp Znacznik czasu kroku (UTC, ISO 8601). Docelowo znacznik z TSA — patrz ograniczenia. 2026-07-05T11:42:07Z integralność
hash sha256 z kanonicznej treści rekordu (pola + prev_hash) — spina łańcuch. 9f3a…c71b integralność
decision Świadoma decyzja/akcja wynikająca z kroku i jej uzasadnienie (dlaczego). escalate — finding CVSS 8.6 spełnia próg eskalacji audyt

Przykład syntetyczny — jeden łańcuch

Poniższy trace jest w całości zmyślony na potrzeby ilustracji (dane syntetyczne, konta z sufiksem @synthetic). Pokazuje 3 połączone kroki agenta, gdzie prev_hash każdego kolejnego wskazuje na hash poprzedniego.

{
  "chain_id": "coc-INC-042-a1",
  "agent": "ip3-triage-agent (synthetic)",
  "steps": [
    {
      "seq": 1,
      "prompt": "Pobierz evidence dla incydentu INC-042.",
      "tool_call": "ip3.get_incident_evidence",
      "args": { "id": "INC-042", "fields": ["findings","cvss"] },
      "output": "5 findings (CVSS 4.1–8.6), evidence-package sha256 c0ffee…",
      "human_approval": { "required": false },
      "timestamp": "2026-07-05T11:42:07Z",
      "prev_hash": null,
      "hash": "9f3a1d…c71b",
      "decision": "continue"
    },
    {
      "seq": 2,
      "prompt": "Podsumuj findings i wskaż kandydatów do eskalacji.",
      "retrieved_context": [
        { "src": "evidence-package INC-042#f3", "sha256": "a12b…" },
        { "src": "policy: eskalacja CVSS>=8.0", "sha256": "b45c…" }
      ],
      "output": "1 z 5 findings (CVSS 8.6) spełnia próg eskalacji.",
      "human_approval": { "required": false },
      "timestamp": "2026-07-05T11:42:19Z",
      "prev_hash": "9f3a1d…c71b",
      "hash": "4c8e77…21aa",
      "decision": "propose_escalation"
    },
    {
      "seq": 3,
      "prompt": "Eskaluj finding f3 do właściciela ryzyka.",
      "tool_call": "ip3.escalate_finding",
      "args": { "finding": "f3", "to": "risk-owner@synthetic" },
      "output": "Eskalacja zarejestrowana jako task T-9001.",
      "human_approval": {
        "required": true,
        "by": "analyst@synthetic",
        "verdict": "approved",
        "at": "2026-07-05T11:44:02Z"
      },
      "timestamp": "2026-07-05T11:44:05Z",
      "prev_hash": "4c8e77…21aa",
      "hash": "e70b9c…88f4",
      "decision": "escalate"
    }
  ]
}

Weryfikacja łańcucha (idea): przelicz sha256 z kanonicznej treści każdego kroku wraz z jego prev_hash i porównaj z zapisanym hash. Rozjazd w którymkolwiek ogniwie = łańcuch naruszony. Metodę spójną z tym opisuje /verify.

Po co to — wartość audytowa

Odtwarzalność decyzji

Audytor widzi na czym agent oparł wynik: prompt, pobrany kontekst i argumenty narzędzi — a nie tylko końcową odpowiedź.

Human-in-the-loop jawnie

Pole human_approval pokazuje, czy działanie o skutkach było zatwierdzone przez człowieka, przez kogo i kiedy.

Integralność łańcucha

Powiązane hashe (prev_hashhash) sprawiają, że cicha podmiana pojedynczego kroku jest wykrywalna.

Spójność z evidence ipIII

Ten sam język dowodowy co evidence-package incydentów: źródło + sha256 + chain-of-custody.

MVP vs ROADMAP — uczciwie

ElementDziś (MVP)DocelowoStatus
Model pól łańcucha Zdefiniowany, opisany na tej stronie Walidowany schemat + wersjonowanie MVP
Przykład trace Syntetyczny, ilustracyjny (na tej stronie) Zapis realnego łańcucha w bazie MVP
Interaktywny podgląd (trace viewer) Brak — statyczny przykład Przeglądarka kroków krok-po-kroku z weryfikacją hashy ROADMAP
Podpis / znacznik czasu sha256 jako odcisk integralności Podpis + znacznik czasu TSA (RFC 3161) ROADMAP
Automatyczne przechwytywanie Ręczny/przykładowy zapis Hook przechwytujący kroki agenta do łańcucha ROADMAP

Skrót

10
Pól w rekordzie kroku
prompt → decision + hash
3
Kroki w przykładzie
dane syntetyczne @synthetic
2
Elementy integralności
timestamp · hash (prev_hash)
3
Pozycje ROADMAP
trace viewer · TSA · auto-capture
„100%" u nas znaczy pokrycie dowodowe, nie nieprzenikalność. Ten łańcuch zwiększa odtwarzalność i wykrywalność podmiany — nie jest dowodem, że agent nie popełni błędu. Elementy bez działającego kodu i endpointu są oznaczone ROADMAP, nie MVP.
Granica etyczna i prawna. Agent Chain-of-Custody jest narzędziem obrony i audytu działania AI (GRC/blue). Wszystkie dane na tej stronie są syntetyczne. Zawartość nie zawiera i nie opisuje technik ataku ani payloadów. Wdrożenie łańcucha na realnych danych — wyłącznie w granicach pisemnych Rules of Engagement.

Powiązane: kontrola bezpieczeństwa agentów → /agent-security · zgłoszenie i obsługa incydentu AI → /ai-incident · weryfikacja integralności dowodów → /verify.