Skip to content

Telltale

Detection Catalog

This catalog summarizes the bundled rule YAML and detection documentation so investigators can understand what Telltale is matching before they open raw session stores. It is a field reference, not a promise that every risky behavior is detected.

Rule quality contract

Bundled rules use one YAML-driven engine for security detections, policy violations, hunting, compliance observations, operational health, and baseline deviations. The detection content standard requires stable IDs, categories, severity, score, valid targets, matching logic, tags, explanations, and false-positive notes.

  • Rule IDs are stable dot-separated identifiers and should not be reused after retirement.
  • Categories describe observed behavior; detection_class, signal_type, and analytic_intent describe how analysts should use the event.
  • ATLAS tags are offline documentation context only; scans do not fetch MITRE ATLAS.
  • Positive fixtures must be synthetic, minimal, and assert redacted evidence rather than raw secrets.
  • Negative fixtures are expected when normal developer activity could trigger a rule.

Bundled atomic rules

The catalog below lists the current bundled rules from config/rules/tool-call-regex.yaml. Target fields tell you where the regex or selection evaluates canonical observations.

Bundled Telltale rule catalog

secret.env.read

Category
secret_access
Severity / score
medium / 35
Targets
command, arguments, file_path, assistant_context, tool_result

Access to `.env`-style files; legitimate debugging can match.

secret.private_key.read

Category
secret_access
Severity / score
high / 55
Targets
command, arguments, file_path, tool_result

Private key paths or key material; certificate inventory can match.

credential.api_key.pattern

Category
credential_pattern
Severity / score
medium / 30
Targets
command, arguments, tool_result, assistant_context

Token-shaped strings for hunting; synthetic examples and docs can match.

execution.shell

Category
execution
Severity / score
low / 15
Targets
command, arguments

Shell or interpreter execution; common in normal development and strongest when chained.

execution.encoded_payload

Category
execution
Severity / score
high / 50
Targets
command, arguments

Encoded payload decoding; incident-response or build tasks can be benign.

network.download

Category
download
Severity / score
low / 20
Targets
command, arguments, url

Download by curl, wget, PowerShell, or fetch; expected setup often matches.

install.package_manager

Category
install
Severity / score
low / 20
Targets
command, arguments

Package-manager execution; review package source and surrounding actions.

exfil.outbound_upload

Category
exfiltration
Severity / score
high / 60
Targets
command, arguments, url

Upload or object-storage copy; authorized artifact uploads can match.

persistence.shell_profile

Category
persistence
Severity / score
high / 45
Targets
command, arguments, file_path

Shell profile, cron, service, or launch-agent changes; setup flows can be legitimate.

approval.bypass.context

Category
approval_bypass
Severity / score
high / 45
Targets
assistant_context, command, arguments, tool_result

Language about hiding, no-confirm, or bypassing approval; quoted policy text can match.

tool.injection.shape

Category
tool_injection
Severity / score
high / 55
Targets
assistant_context, tool_name, arguments

Tool-call-shaped content in model output; parser tests and copied logs can match.

mcp.tool_metadata.prompt_injection

Category
mcp_prompt_injection
Severity / score
high / 60
Targets
assistant_context, arguments, tool_result

MCP metadata or output with instruction-override language; security fixtures can match.

network.controlled_test_domain.darkroast

Category
exfiltration
Severity / score
high / 45
Targets
command, arguments, url, assistant_context, tool_result

Controlled Dark Roast Cyber test-domain references; fixtures and validation commands can match.

exfil.dns_encoding

Category
exfiltration
Severity / score
high / 55
Targets
command, arguments

Encoded data in DNS tooling; demos and troubleshooting require context.

exfil.encoded_http

Category
exfiltration
Severity / score
high / 50
Targets
command, arguments

Encoded data sent to HTTP endpoints; expected API payloads can match.

credential.cloud_harvest

Category
credential_harvesting
Severity / score
high / 50
Targets
command, arguments, file_path

Cloud, Kubernetes, Docker, or service-account credential paths; authorized CLI troubleshooting can match.

supply_chain.publish

Category
supply_chain
Severity / score
high / 45
Targets
command, arguments

Package publishing commands; correlate with release intent and credential access.

mcp.server_enumeration

Category
mcp_enumeration
Severity / score
medium / 40
Targets
command, arguments, assistant_context, tool_result

MCP server/tool probing; inventory and integration tests can match.

Chain modifiers

Chain modifiers add risk for co-occurring categories or exact rule IDs in a session window. Names containing “then” do not enforce temporal order. Confirm sequence and impact from preserved evidence.

Bundled Telltale chain modifiers

chain.secret_then_network

Trigger
secret_access + download
Score add
+35

Secret access near network activity materially increases exfiltration risk.

chain.download_then_execute

Trigger
download + execution
Score add
+35

Download plus execution warrants review; the modifier does not establish order.

chain.shell_encoded_payload

Trigger
execution.shell + execution.encoded_payload
Score add
+10

Shell execution plus encoded payload evidence increases deterministic risk.

chain.install_then_persistence

Trigger
install + persistence
Score add
+30

Package installation plus profile or service persistence warrants analyst review.

chain.mcp_injection_then_egress

Trigger
mcp_prompt_injection + exfiltration
Score add
+35

MCP prompt injection near outbound egress is the first high-signal alert use case.

chain.credential_then_publish

Trigger
credential_harvesting + supply_chain
Score add
+40

Credential harvesting plus publishing warrants supply-chain review; confirm intent and order separately.

chain.harvest_then_exfil

Trigger
credential_harvesting + exfiltration
Score add
+35

Credential harvesting plus exfiltration indicators warrants review; verify actual transfer separately.

chain.mcp_enumeration_then_injection

Trigger
mcp_enumeration + mcp_prompt_injection
Score add
+30

Enumeration plus injection indicators warrants review; neither intent nor order is established.

Risk scoring thresholds

Risk starts at zero. Positive rule, modifier, and enabled baseline contributions form an exact ledger; severity thresholds produce deterministic response guidance. No embedded triage overrides the result.

Artifact Paths

0-19

informational

Matched detections and process chains can be informational; activity is separate.

20-49

low

Log detection with matched rule details.

50-69

medium

Log detection and include expanded context fields.

70-89

high

Deterministic response guidance for security review.

90+

critical

Deterministic guidance for immediate investigation.

First high-signal use cases

The Telltale use-case documentation defines concrete fixture-driven behaviors that should produce useful alerts without using real credentials or attacker infrastructure.

  • UC-001: fake MCP prompt injection to a controlled Dark Roast Cyber test domain; expected rules include mcp.tool_metadata.prompt_injection and network.controlled_test_domain.darkroast, with chain.mcp_injection_then_egress when egress is present.
  • UC-002: credential harvesting before package publish; expected rules include credential.cloud_harvest, supply_chain.publish, and chain.credential_then_publish.
  • UC-003: DNS exfiltration with encoded payload; expected rules include execution.encoded_payload, exfil.dns_encoding, and chain.shell_encoded_payload.

Validate and preview rules

Use validation and fixture tests before writing scan output. This keeps detection changes deterministic and catches invalid regexes or unsupported targets.

Validate bundled rules
SH
cargo run --bin telltale -- rules validate --no-local-config
Dry-run bundled detection over fixtures
SH
cargo run --bin telltale -- scan --once --dry-run --no-local-config --root tests/fixtures/session_stores

Run from the Telltale repository. Fixture scans should not write real monitoring output unless --allow-fixtures and an explicit dev sink are intentionally used.

How to use this page during an investigation

  • Start with event fields: rule_ids, categories, risk_score, severity, client, session_id, tool_name, and response.*.
  • Read the rule explanation and false-positive caveat before opening local raw session stores.
  • Treat chain modifiers as stronger evidence than single low-signal activity such as ordinary shell use or package installation.
  • Use the source-validation page before interpreting a missing field. Copilot user context is unsupported. Call ID, workspace, and error state are conditional or absent by source, not universally discarded.