Anthropic Excessive Chat Creation
Detects an unusually high number of Claude chat creation events for the same user email within a 24-hour period. Burst chat creation can indicate automated LLM abuse, resource hijacking to burn organizational quotas, or scripted workflows used to stage many parallel conversations for data processing or prompt-injection campaigns.
Elastic rule (View on GitHub)
1[metadata]
2creation_date = "2026/09/15"
3integration = ["anthropic"]
4maturity = "production"
5updated_date = "2026/09/21"
6
7[rule]
8author = ["Elastic"]
9description = """
10Detects an unusually high number of Claude chat creation events for the same user email within a 24-hour period.
11Burst chat creation can indicate automated LLM abuse, resource hijacking to burn organizational quotas, or scripted
12workflows used to stage many parallel conversations for data processing or prompt-injection campaigns.
13"""
14false_positives = [
15 """
16 Power users, automation engineers, or evaluation scripts that create many short-lived chats during testing can exceed
17 the threshold without malicious intent.
18 """,
19]
20from = "now-24h"
21interval = "1h"
22language = "esql"
23license = "Elastic License v2"
24name = "Anthropic Excessive Chat Creation"
25note = """## Triage and analysis
26
27### Investigating Anthropic Excessive Chat Creation
28
29One mailbox created a large burst of Claude chats in 24 hours — fits automation, quota burn, or scripted parallel
30workflows.
31
32True-positive signals: scripting UA (curl/python/Go-http-client), many distinct project IDs, concurrent file uploads
33or deletions, or follow-on exports. False-positive signals: known eval/load-test accounts, onboarding templates from
34one admin with browser UA and no data-access follow-ons.
35
36#### Possible investigation steps
37
38- Prefer alerts with scripting UA and/or many distinct project IDs over browser UA confined to one known project.
39- Correlate with high file uploads, chat deletions, or org data export from the same email in the same window.
40
41### False positive analysis
42
43- Known eval/load-test seats and onboarding template creators with browser UA and no data-access follow-ons are FP.
44
45### Response and remediation
46
47- When TP signals hold: revoke sessions, review project membership, and apply rate limits or policy changes for the
48 actor.
49"""
50references = [
51 "https://platform.claude.com/docs/en/api/compliance/activities/list",
52]
53risk_score = 47
54rule_id = "854d9932-93c3-42d4-bab0-7723a91df397"
55severity = "medium"
56tags = [
57 "Domain: GenAI",
58 "Platform: Anthropic",
59 "Data Source: Anthropic Audit Logs",
60 "Use Case: Threat Detection",
61 "Use Case: UEBA",
62 "Resources: Investigation Guide",
63 "Rule Type: ES|QL",
64 "Tactic: Impact",
65]
66timestamp_override = "event.ingested"
67type = "esql"
68
69query = '''
70from logs-anthropic.audit-*
71| where
72 data_stream.dataset == "anthropic.audit" and
73 event.action == "claude_chat_created" and
74 event.outcome == "success" and
75 user.email is not null
76| stats
77 Esql.event_count = count(*),
78 Esql.event_id_values = values(event.id),
79 Esql.anthropic_audit_claude_chat_id_values = values(anthropic.audit.claude_chat_id),
80 Esql.anthropic_audit_claude_project_id_values = values(anthropic.audit.claude_project_id),
81 Esql.source_ip_values = values(source.ip),
82 Esql.user_agent_original_values = values(user_agent.original),
83 Esql.anthropic_audit_actor_type_values = values(anthropic.audit.actor.type),
84 Esql.user_id_values = values(user.id),
85 Esql.timestamp_first_seen = min(@timestamp),
86 Esql.timestamp_last_seen = max(@timestamp)
87 by user.email
88| where Esql.event_count >= 20
89| keep user.email, Esql.*
90'''
91
92
93[[rule.threat]]
94framework = "MITRE ATT&CK"
95[[rule.threat.technique]]
96id = "T1496"
97name = "Resource Hijacking"
98reference = "https://attack.mitre.org/techniques/T1496/"
99
100
101[rule.threat.tactic]
102id = "TA0040"
103name = "Impact"
104reference = "https://attack.mitre.org/tactics/TA0040/"
105
106[rule.alert_suppression]
107group_by = ["user.email"]
108duration = {value = 24, unit = "h"}
109missing_fields_strategy = "suppress"
110
111[rule.investigation_fields]
112field_names = [
113 "user.email",
114 "Esql.event_count",
115 "Esql.event_id_values",
116 "Esql.anthropic_audit_claude_chat_id_values",
117 "Esql.anthropic_audit_claude_project_id_values",
118 "Esql.source_ip_values",
119 "Esql.user_agent_original_values",
120 "Esql.anthropic_audit_actor_type_values",
121 "Esql.user_id_values",
122 "Esql.timestamp_first_seen",
123 "Esql.timestamp_last_seen",
124]
Triage and analysis
Investigating Anthropic Excessive Chat Creation
One mailbox created a large burst of Claude chats in 24 hours — fits automation, quota burn, or scripted parallel workflows.
True-positive signals: scripting UA (curl/python/Go-http-client), many distinct project IDs, concurrent file uploads or deletions, or follow-on exports. False-positive signals: known eval/load-test accounts, onboarding templates from one admin with browser UA and no data-access follow-ons.
Possible investigation steps
- Prefer alerts with scripting UA and/or many distinct project IDs over browser UA confined to one known project.
- Correlate with high file uploads, chat deletions, or org data export from the same email in the same window.
False positive analysis
- Known eval/load-test seats and onboarding template creators with browser UA and no data-access follow-ons are FP.
Response and remediation
- When TP signals hold: revoke sessions, review project membership, and apply rate limits or policy changes for the actor.
References
Related rules
- Anthropic Admin API Key Deleted
- Anthropic Excessive Chat Access Failures
- Anthropic Excessive Chat Deletion
- Anthropic Excessive Chat Snapshot Creation
- Anthropic Extra Usage Spend Limit Deleted