Skip to content

Sessions at Taint ​

Ang sessions ang fundamental unit ng conversation state sa Triggerfish. Bawat session ay independyenteng nag-track ng taint level -- isang classification watermark na nagre-record ng pinakamataas na sensitivity ng data na na-access habang nasa session. Ang taint ang nagda-drive sa output decisions ng policy engine: kung ang session ay tainted sa CONFIDENTIAL, walang data mula sa session na maaaring dumaloy sa channel na classified na mas mababa sa CONFIDENTIAL.

Session Taint Model ​

Paano Gumagana ang Taint ​

Kapag nag-access ang session ng data sa isang classification level, ang buong session ay nata-taint sa level na iyon. Tatlong rules ang sinusunod ng taint:

  1. Per-conversation: Bawat session ay may sariling independent na taint level
  2. Escalation only: Maaari lamang tumaas ang taint, hindi bumababa sa loob ng session
  3. Full reset clears everything: Sabay na binu-bura ang taint AT ang conversation history
Taint escalation: PUBLIC → INTERNAL → CONFIDENTIAL → RESTRICTED. Maaari lamang mag-escalate ang taint, hindi bumababa.

SECURITY Hindi kailanman maaaring selective na ibaba ang taint. Walang

mekanismo para "i-un-taint" ang session nang hindi binu-bura ang buong conversation history. Pinipigilan nito ang context leakage -- kung natatandaan ng session na nakakita ng confidential data, kailangang i-reflect iyon ng taint. :::

Bakit Hindi Maaaring Bumaba ang Taint ​

Kahit na hindi na ipinapakita ang classified data, naglalaman pa rin nito ang context window ng LLM. Maaaring mag-reference, mag-summarize, o mag-echo ang model ng classified information sa mga susunod na responses. Ang tanging safe na paraan para ibaba ang taint ay alisin ang context nang buo -- na eksaktong ginagawa ng full reset.

Mga Uri ng Session ​

Nagma-manage ang Triggerfish ng ilang session types, bawat isa ay may independent na taint tracking:

Uri ng SessionPaglalarawanInitial TaintPersistent sa Mga Restart
MainPangunahing direct conversation sa ownerPUBLICOo
ChannelIsa sa bawat connected channel (Telegram, Slack, etc.)PUBLICOo
BackgroundNag-spawn para sa autonomous tasks (cron, webhooks)PUBLICHabang tumatakbo ang task
AgentPer-agent sessions para sa multi-agent routingPUBLICOo
GroupGroup chat sessionsPUBLICOo

Palaging nagsisimula ang background sessions sa PUBLIC taint, anuman

ang taint level ng parent session. Sadya ito -- hindi dapat mag-inherit ang cron jobs at webhook-triggered tasks ng taint ng kahit anong session na nag-spawn sa kanila. :::

Halimbawa ng Taint Escalation ​

Narito ang isang kumpletong flow na nagpapakita ng taint escalation at ang resultang policy block:

Halimbawa ng taint escalation: nagsisimula ang session sa PUBLIC, nag-escalate sa CONFIDENTIAL pagkatapos mag-access ng Salesforce, pagkatapos BINA-BLOCK ang output sa PUBLIC WhatsApp channel

Full Reset Mechanism ​

Ang session reset ang tanging paraan para ibaba ang taint. Ito ay isang deliberate at destructive na operasyon:

  1. I-archive ang lineage records -- Lahat ng lineage data mula sa session ay pinapanatili sa audit storage
  2. I-clear ang conversation history -- Binu-bura ang buong context window
  3. I-reset ang taint sa PUBLIC -- Nagsisimulang muli ang session
  4. Mangailangan ng user confirmation -- Nangangailangan ng explicit confirmation ang SESSION_RESET hook bago mag-execute

Pagkatapos ng reset, hindi na makilala ang session mula sa bagong session. Wala nang alaala ang agent tungkol sa nakaraang conversation. Ito lang ang paraan para ma-guarantee na hindi maaaring mag-leak ang classified data sa pamamagitan ng context ng LLM.

Inter-Session Communication ​

Kapag nagpapadala ng data ang agent sa pagitan ng sessions gamit ang sessions_send, ang parehong write-down rules ang nalalapat:

Taint ng Source SessionChannel ng Target SessionDesisyon
PUBLICPUBLIC channelALLOW
CONFIDENTIALCONFIDENTIAL channelALLOW
CONFIDENTIALPUBLIC channelBLOCK
RESTRICTEDCONFIDENTIAL channelBLOCK

Mga session tools na available sa agent:

ToolPaglalarawanEpekto sa Taint
sessions_listMag-list ng active sessions na may filtersWalang pagbabago sa taint
sessions_historyMag-retrieve ng transcript para sa sessionIni-inherit ng taint mula sa referenced session
sessions_sendMagpadala ng mensahe sa ibang sessionNapapailalim sa write-down check
sessions_spawnGumawa ng background task sessionNagsisimula ang bagong session sa PUBLIC
session_statusMag-check ng current session state at metadataWalang pagbabago sa taint

Data Lineage ​

Bawat data element na pino-process ng Triggerfish ay may provenance metadata -- isang kumpletong record kung saan nanggaling ang data, paano ito na-transform, at kung saan ito napunta. Ang lineage ang audit trail na nagpapaverify sa mga classification decisions.

Istruktura ng Lineage Record ​

json
{
  "lineage_id": "lin_789xyz",
  "content_hash": "sha256:a1b2c3d4...",
  "origin": {
    "source_type": "integration",
    "source_name": "salesforce",
    "record_id": "opp_00123ABC",
    "record_type": "Opportunity",
    "accessed_at": "2025-01-29T10:23:45Z",
    "accessed_by": "user_456",
    "access_method": "plugin_query"
  },
  "classification": {
    "level": "CONFIDENTIAL",
    "reason": "source_system_default",
    "assigned_at": "2025-01-29T10:23:45Z",
    "can_be_downgraded": false
  },
  "transformations": [
    {
      "type": "extraction",
      "description": "Selected fields: name, amount, stage",
      "timestamp": "2025-01-29T10:23:46Z",
      "agent_id": "agent_123"
    },
    {
      "type": "summarization",
      "description": "LLM summarized 3 records into pipeline overview",
      "timestamp": "2025-01-29T10:23:47Z",
      "input_lineage_ids": ["lin_789xyz", "lin_790xyz", "lin_791xyz"],
      "agent_id": "agent_123"
    }
  ],
  "current_location": {
    "session_id": "sess_456",
    "context_position": "assistant_response_3"
  }
}

Mga Patakaran sa Lineage Tracking ​

EventLineage Action
Binasa ang data mula sa integrationGumawa ng lineage record na may origin
Na-transform ang data ng LLMMag-append ng transformation, i-link ang input lineages
Na-aggregate ang data mula sa maraming sourcesMag-merge ng lineage, classification = max(inputs)
Naipadala ang data sa channelI-record ang destination, i-verify ang classification
Na-reset ang sessionI-archive ang lineage records, i-clear mula sa context

Aggregation Classification ​

Kapag pinagsama ang data mula sa maraming sources (hal., LLM summary ng records mula sa iba't ibang integrations), ini-inherit ng aggregated result ang maximum classification ng lahat ng inputs:

Input 1: INTERNAL    (internal wiki)
Input 2: CONFIDENTIAL (Salesforce record)
Input 3: PUBLIC      (weather API)

Aggregated output classification: CONFIDENTIAL (max ng inputs)

Maaaring mag-configure ang enterprise deployments ng optional downgrade

rules para sa statistical aggregates (averages, counts, sums ng 10+ records) o certified anonymized data. Lahat ng downgrades ay nangangailangan ng explicit policy rules, nilo-log nang may buong justification, at napapailalim sa audit review. :::

Mga Kakayahan sa Audit ​

Pinapagana ng lineage ang apat na kategorya ng audit queries:

  • Forward trace: "Anong nangyari sa data mula sa Salesforce record X?" -- sinusundan ang data mula sa origin hanggang sa lahat ng destinations
  • Backward trace: "Anong sources ang nag-contribute sa output na ito?" -- tina-trace ang output pabalik sa lahat ng source records nito
  • Classification justification: "Bakit CONFIDENTIAL ang mark nito?" -- ipinapakita ang classification reason chain
  • Compliance export: Buong chain of custody para sa legal o regulatory review

Taint Persistence ​

Ang session taint ay persistent sa pamamagitan ng StorageProvider sa ilalim ng taint: namespace. Ibig sabihin nito na tumatagal ang taint sa daemon restarts -- ang session na CONFIDENTIAL bago ang restart ay CONFIDENTIAL pa rin pagkatapos.

Ang lineage records ay persistent sa ilalim ng lineage: namespace na may compliance-driven retention (default 90 araw).