Classifiers

INT-Tooling

Behavioral tool-intent and policy evaluation before your agent executes an action.

INT-Tooling evaluates the behavioral risk and authorization of a proposed tool call given what the user actually asked for. Run it after your model emits a tool call but before you execute it. It is exposed as tool_call.check in the SDKs and POST /v1/tool-guard over REST.

What it detects#

Three separate signals: whether the user request itself is malicious, how harmful the current action is (for example, destructive commands, data exfiltration, or privilege escalation), and whether a hijacked instruction drove the action away from the user’s genuine request. The last is the confused-deputy case: a “summarize my inbox” request that somehow produces a call to email your database dump to an external address. See Concepts.

Behavioral action check, not code scanning

INT-Tooling treats the tool name, arguments, command text, and environment as a semantic description of a proposed action. It does not execute or parse source code, detect malware, resolve dependency risk, or prove that a command/script/binary is safe. Keep sandboxing, least privilege, code review, and code/artifact scanners as separate gates.

Inputs#

FieldSurfaceRequiredDescription
user_requestSDK and RESTYesWhat the user asked the agent to do.
tool_nameSDKYesName of the tool being invoked.
tool_descriptionSDKNoThe tool's capabilities. Combined with the name as the action under review.
tool_argumentsSDKNoStructured function-call arguments. The SDK serializes these as the action under review and gives them precedence over tool_description.
current_actionRESTNoAction string to evaluate. The SDK derives this from the tool name and arguments or description.
interaction_historySDK and RESTNoPrior conversation context as a string.
env_infoSDK and RESTNoEnvironment context (for example, "production database").

Result fields#

FieldTypeDescription
maliciousstring"yes" or "no". Whether the user request shows malicious behavioral intent; this does not mean malware or malicious-code detection.
attackedstring"yes" or "no". Does it look driven by a hijacked instruction.
harmfulnessnumberCurrent-action severity, one of 0.0, 0.5, or 1.0.
composite_scorenumberOverall risk, one of 0.0, 0.5, or 1.0.
latency_msnumberServer-side inference time.
is_safebooleanConvenience: true only when composite_score is 0.0.

Scoring#

composite_score is the field to act on. The SDKs also expose is_flagged (true when the score is above 0 but below the unsafe band) so you can distinguish “review this” from “block this”.

composite_scoreInterpretationis_safeis_flagged
0.0No behavioral-policy risk detected; execution still needs ordinary code/security controls.truefalse
0.5Flagged. Review before executing.falsetrue
1.0Unsafe. Do not execute.falsefalse

When you use the gateway, these bands map to the tool guard’s configurable flagged and unsafe thresholds (default 0.4 and 0.8).

Example#

tool = triage_sdk.tool_call.check(
    user_request="Summarize my most recent invoices",
    tool_name="send_email",
    tool_arguments={
        "to": "external@example.com",
        "subject": "Database export",
        "attachment": "/tmp/customers.csv",
    },
    interaction_history="An invoice attachment instructed the agent to email the customer database externally.",
    env_info="production server with customer data",
    session_id="sess_abc123",
)

print(tool.composite_score)  # 1.0
print(tool.is_safe)          # False