Digital Intelligence Actor Classification

Understand how Digital Intelligence identifies whether a session was driven by a person, a script, or an AI agent in RiskOS™ evaluations.

🚧

This is a GA preview of a Premier Feature: temporarily available for testing and evaluation

Actor Classification is a Premier feature. It is temporarily available to customers for testing and evaluation. Availability, behavior, and packaging may change before general availability. Contact your Socure account team to learn more.


Actor Classification

When the Digital Intelligence enrichment runs in a RiskOS™ workflow, the Evaluation response contains an actorClassification object. This object tells you whether automation was detected in the session, whether that automation looks like a script or an AI agent, and, when we can tell, who or what is behind it.

The object is returned at data_enrichments[].response.digitalIntelligence.actorClassification, alongside the device, behavioral, and velocityMetrics objects.

{
  "data_enrichments": [
    {
      "enrichment_name": "Socure Digital Intelligence",
      // ...
      "response": {
        "digitalIntelligence": {
          // ...
          // highlight-start
          "actorClassification": {
            "summary": {
              "isAutomated": true,
              "isAgentic": true
            },
            "agentAutomationDetails": {
              "type": "personal_agent",
              "name": "muse",
              "indicator": "device"
            }
          }
          // highlight-end
        }
      }
    }
  ]
}

How actor classification works

Actor classification looks at the device data and the on-page behavior (typing, clicks, field fills, and timing) collected by the Digital Intelligence SDK for the di_session_token. Each evaluation is classified on its own, so a session can receive different results across evaluations. For example, a person may start a session and an AI agent may take over later.

Classification answers three questions:

  • Is the session automated? (isAutomated)

  • If it is automated, is it driven by an AI agent or by a script? (isAgentic)

  • When it can be shown, which agent or which script operator is behind it? (agentAutomationDetails, scriptAutomationDetails)

📘

Note:

Actor classification is available for web sessions using Digital Intelligence Web SDK version 2.9.0 or later. Sessions from mobile apps, older SDK versions, or pages with no recorded interaction return an inconclusivenessReason instead of a classification.


Fields

Empty fields are omitted from the response.

  • summary:

    • isAutomated: true if software, not a person, drove the session. false means no automation was detected. It does not prove a person was present.
    • isAgentic: Only set when isAutomated is true.
      • true: an AI agent drove the session, meaning software that reads the page and decides what to do next, usually on a person's behalf.
      • false: a script drove the session, meaning software that follows fixed steps.
      • Empty: automation was detected, but the evidence fits a script and an agent equally.
    • scriptAutomationRisk: Only set when isAgentic is false.
      • low: we know who runs the script and confirmed it from the network it came from, such as an account aggregator or a known search crawler. This is usually expected traffic.
      • medium: a script we can't name or confirm. Whether it is wanted is your decision.
      • high: the script claims to be a known crawler but comes from a network that crawler doesn't use. Someone is pretending.
  • scriptAutomationDetails: Present when isAgentic is false or empty.

    • type: account_aggregator, accessibility_reader, ads_crawler, search_crawler, or unknown.
    • name: the operator, when identified. For example: plaid, mx, yodlee, googlebot, bingbot, google_read_aloud.
    • indicator: how the operator was identified.
      • isp, isp+device, ua+asn: confirmed by the operator's own network.
      • asn+device: inferred from a known network and device setup.
      • device: the device setup matches, but the network doesn't confirm it.
      • ua_only: the network contradicts the claimed identity.
  • agentAutomationDetails: Present when isAgentic is true or empty.

    • type:
      • personal_agent: a known consumer AI agent acting for its user.
      • vision_agent: an agent that works from screenshots and types and clicks like a person at a computer.
      • dom_agent: an agent that reads the page's code and fills fields directly.
      • unknown: the kind of agent couldn't be determined.
    • name: the personal agent, when identified: muse, instinct, grok, or grok_bot.
    • indicator: device (the device matches a known agent), device_partial (part of a known agent's device setup matched), or behavior (classified by how it types, clicks, and pauses).
  • inconclusivenessReason: Present only when summary is empty.

codemessageMeaning
IC_001Platform Not AvailableNot a web session. Actor classification covers web only.
IC_002Old SDK VersionThe SDK is older than 2.9.0, so the needed data isn't collected.
IC_003Insufficient Behavioral DataThe page recorded no typing, clicking, or field activity, and nothing else identified automation. This is not evidence of a bot.
IC_004OtherThe session couldn't be classified, for a reason not covered by the codes above.
📘

Note:

Agent and operator names describe what we observed. Use them alongside the other signals in your RiskOS™ workflow rather than as the only basis for a decision. A missing result (isAutomated: false or an inconclusive response) does not confirm a person is present.


Examples

Not automated

No automation was detected in the session.

"actorClassification": {
  "summary": {
    "isAutomated": false
  }
}

Known account aggregator

A script ran the session, and we confirmed from its network that it is MX, an account aggregator. The risk is low because this is usually expected traffic.

"actorClassification": {
  "summary": {
    "isAutomated": true,
    "isAgentic": false,
    "scriptAutomationRisk": "low"
  },
  "scriptAutomationDetails": {
    "type": "account_aggregator",
    "name": "mx",
    "indicator": "isp+device"
  }
}

Unknown script

A script ran the session, but we couldn't identify who runs it. The risk is medium.

"actorClassification": {
  "summary": {
    "isAutomated": true,
    "isAgentic": false,
    "scriptAutomationRisk": "medium"
  },
  "scriptAutomationDetails": { "type": "unknown" }
}

AI agent identified by behavior

An AI agent ran the session. We couldn't name it, but its typing and timing match an agent that fills fields directly through the page.

"actorClassification": {
  "summary": {
    "isAutomated": true,
    "isAgentic": true
  },
  "agentAutomationDetails": { "type": "dom_agent", "indicator": "behavior" }
}

Inconclusive

The session used an SDK older than 2.9.0, so no classification could be made.

"actorClassification": {
  "inconclusivenessReason": { "code": "IC_002", "message": "Old SDK Version" }
}


Did this page help you?