Anthropic Excessive Chat Deletion
Detects an unusually high number of Claude chat deletion events for the same user email within a single calendar day. Mass chat deletion can indicate an attempt to remove conversation history, cover tracks after misuse of Claude, or automated cleanup following data staging or prompt abuse.
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 deletion events for the same user email within a single calendar day.
11Mass chat deletion can indicate an attempt to remove conversation history, cover tracks after misuse of Claude, or
12automated cleanup following data staging or prompt abuse.
13"""
14false_positives = [
15 """
16 Users or administrators purging old chats during workspace hygiene, retention exercises, or GDPR-related cleanup can
17 exceed the daily threshold legitimately.
18 """,
19]
20from = "now-24h"
21interval = "1h"
22language = "esql"
23license = "Elastic License v2"
24name = "Anthropic Excessive Chat Deletion"
25note = """## Triage and analysis
26
27### Investigating Anthropic Excessive Chat Deletion
28
29One mailbox deleted many chats in a UTC day bucket. Deleted content may no longer be viewable in the product UI —
30preserve audit history early.
31
32Escalate when deletions follow uploads/exports/sharing, UA looks scripted, or compliance logging was disabled nearby.
33Close as FP for scheduled retention cleanup or migration tooling with a ticket.
34
35#### Possible investigation steps
36
37- Capture chat/project ID values from the alert while they remain in audit history.
38- Compare deletion volume to prior `claude_chat_created` / `claude_file_uploaded` from the same email — delete-after-
39 upload is higher priority than cleanup of empty chats.
40- Inspect IP/UA for scripted patterns; correlate with logging disablement, SSO changes, or data exports.
41
42### False positive analysis
43
44- Project closure cleanup and migration tooling often bulk-delete in one session.
45
46### Response and remediation
47
48- On malicious deletion: preserve remaining audit exports, revoke sessions, and investigate whether sensitive content
49 was uploaded or shared before deletion.
50"""
51references = [
52 "https://platform.claude.com/docs/en/api/compliance/activities/list",
53]
54risk_score = 47
55rule_id = "2944223e-3c25-4ce4-bd69-64f2914da187"
56severity = "medium"
57tags = [
58 "Domain: GenAI",
59 "Platform: Anthropic",
60 "Data Source: Anthropic Audit Logs",
61 "Use Case: Threat Detection",
62 "Use Case: UEBA",
63 "Resources: Investigation Guide",
64 "Rule Type: ES|QL",
65 "Tactic: Defense Evasion",
66]
67timestamp_override = "event.ingested"
68type = "esql"
69
70query = '''
71from logs-anthropic.audit-*
72| where
73 data_stream.dataset == "anthropic.audit" and
74 event.action == "claude_chat_deleted" and
75 event.outcome == "success" and
76 user.email is not null
77| eval Esql.time_bucket = DATE_TRUNC(1 day, @timestamp)
78| stats
79 Esql.event_count = count(*),
80 Esql.event_id_values = values(event.id),
81 Esql.anthropic_audit_claude_chat_id_values = values(anthropic.audit.claude_chat_id),
82 Esql.anthropic_audit_claude_project_id_values = values(anthropic.audit.claude_project_id),
83 Esql.source_ip_values = values(source.ip),
84 Esql.user_agent_original_values = values(user_agent.original),
85 Esql.anthropic_audit_actor_type_values = values(anthropic.audit.actor.type),
86 Esql.user_id_values = values(user.id),
87 Esql.timestamp_first_seen = min(@timestamp),
88 Esql.timestamp_last_seen = max(@timestamp)
89 by user.email, Esql.time_bucket
90| where Esql.event_count >= 30
91| keep user.email, Esql.*
92'''
93
94
95[[rule.threat]]
96framework = "MITRE ATT&CK"
97[[rule.threat.technique]]
98id = "T1070"
99name = "Indicator Removal"
100reference = "https://attack.mitre.org/techniques/T1070/"
101
102
103[rule.threat.tactic]
104id = "TA0005"
105name = "Defense Evasion"
106reference = "https://attack.mitre.org/tactics/TA0005/"
107
108[rule.alert_suppression]
109group_by = ["user.email", "Esql.time_bucket"]
110duration = {value = 24, unit = "h"}
111missing_fields_strategy = "suppress"
112
113[rule.investigation_fields]
114field_names = [
115 "user.email",
116 "Esql.time_bucket",
117 "Esql.event_count",
118 "Esql.event_id_values",
119 "Esql.anthropic_audit_claude_chat_id_values",
120 "Esql.anthropic_audit_claude_project_id_values",
121 "Esql.source_ip_values",
122 "Esql.user_agent_original_values",
123 "Esql.anthropic_audit_actor_type_values",
124 "Esql.user_id_values",
125 "Esql.timestamp_first_seen",
126 "Esql.timestamp_last_seen",
127]
Triage and analysis
Investigating Anthropic Excessive Chat Deletion
One mailbox deleted many chats in a UTC day bucket. Deleted content may no longer be viewable in the product UI — preserve audit history early.
Escalate when deletions follow uploads/exports/sharing, UA looks scripted, or compliance logging was disabled nearby. Close as FP for scheduled retention cleanup or migration tooling with a ticket.
Possible investigation steps
- Capture chat/project ID values from the alert while they remain in audit history.
- Compare deletion volume to prior
claude_chat_created/claude_file_uploadedfrom the same email — delete-after- upload is higher priority than cleanup of empty chats. - Inspect IP/UA for scripted patterns; correlate with logging disablement, SSO changes, or data exports.
False positive analysis
- Project closure cleanup and migration tooling often bulk-delete in one session.
Response and remediation
- On malicious deletion: preserve remaining audit exports, revoke sessions, and investigate whether sensitive content was uploaded or shared before deletion.
References
Related rules
- Anthropic Compliance API Logging Disabled
- Anthropic Excessive Chat Access Failures
- Anthropic Excessive Chat Creation
- Anthropic Excessive Chat Snapshot Creation
- Anthropic High File Upload Activity