OpenAI ChatGPT Enterprise Unusual Codex Plugin Installed
Detects the first ChatGPT Enterprise Codex plugin install for a given plugin display name and plugin name pair within the rule history window. Newly installed Codex plugins expand the tools and data sources available inside agent sessions; adversaries can enable unexpected connectors to persist access to mail, chat, or file systems after initial compromise.
Elastic rule (View on GitHub)
1[metadata]
2creation_date = "2026/10/08"
3integration = ["openai_chatgpt_enterprise"]
4maturity = "production"
5updated_date = "2026/10/09"
6
7[rule]
8author = ["Elastic"]
9description = """
10Detects the first ChatGPT Enterprise Codex plugin install for a given plugin display name and plugin name pair within
11the rule history window. Newly installed Codex plugins expand the tools and data sources available inside agent
12sessions; adversaries can enable unexpected connectors to persist access to mail, chat, or file systems after initial
13compromise.
14"""
15false_positives = [
16 """
17 Approved rollout of Codex plugins such as Slack, Gmail, or Google Drive for engineering or support teams. Confirm
18 the plugin against your workspace connector inventory and change process before escalating.
19 """,
20]
21from = "now-9m"
22index = ["logs-openai_chatgpt_enterprise.codex_log-*"]
23language = "kuery"
24license = "Elastic License v2"
25name = "OpenAI ChatGPT Enterprise Unusual Codex Plugin Installed"
26note = """## Triage and analysis
27
28### Investigating OpenAI ChatGPT Enterprise Unusual Codex Plugin Installed
29
30A Codex plugin was installed for the first time for this plugin pair within the rule history window. Plugins can add
31connectors that pull mail, chat, or file content into Codex sessions.
32
33Escalate when the plugin is not on the approved inventory, the installing user is unexpected, or nearby activity shows
34sensitive search bursts, MCP tool abuse, or access-token creation. Close as a false positive for approved connector
35rollouts.
36
37#### Possible investigation steps
38
39- Record `plugin_display_name`, `plugin_name`, and the installing user (`user.email` / `user.id`).
40- Confirm whether the plugin is approved in your ChatGPT Enterprise or Codex workspace inventory.
41- Review nearby Codex and app-log activity for the same user for MCP calls, Drive or Slack query bursts, or credential
42 exposure.
43- Search for the same plugin installed by other users to distinguish org-wide rollout from a single anomalous install.
44
45### False positive analysis
46
47- Planned enablement of common plugins (Slack, Gmail, Google Drive) during onboarding or team pilots.
48
49### Response and remediation
50
51- Remove unauthorized plugins, revoke related OAuth links, and review data accessed after the install.
52- If sensitive data may have been retrieved, follow your data-incident process for the session window.
53"""
54references = [
55 "https://www.elastic.co/docs/reference/integrations/openai_chatgpt_enterprise",
56 "https://platform.openai.com/docs/compliance",
57]
58risk_score = 47
59rule_id = "8f7fbc33-3fcc-4bf7-bd92-853f9c0f3a3c"
60setup = """## Setup
61
62This rule requires the OpenAI ChatGPT Enterprise integration to collect Codex compliance logs into Elasticsearch.
63
64https://www.elastic.co/docs/reference/integrations/openai_chatgpt_enterprise
65"""
66severity = "medium"
67tags = [
68 "Domain: GenAI",
69 "Platform: OpenAI",
70 "Data Source: OpenAI ChatGPT Enterprise",
71 "Service: OpenAI ChatGPT Enterprise",
72 "Use Case: Threat Detection",
73 "Use Case: UEBA",
74 "Resources: Investigation Guide",
75 "Rule Type: New Terms",
76 "Tactic: Persistence",
77 "Tactic: Collection",
78 "Mitre Atlas: AML.T0053",
79 "Mitre Atlas: AML.T0085",
80]
81timestamp_override = "event.ingested"
82type = "new_terms"
83
84query = '''
85data_stream.dataset: "openai_chatgpt_enterprise.codex_log" and
86 event.action: "plugin_installed" and
87 organization.id: * and
88 user.email: * and
89 openai_chatgpt_enterprise.codex_log.event_details.plugin_display_name: * and
90 openai_chatgpt_enterprise.codex_log.event_details.plugin_name: *
91'''
92
93
94[[rule.threat]]
95framework = "MITRE ATT&CK"
96[[rule.threat.technique]]
97id = "T1176"
98name = "Software Extensions"
99reference = "https://attack.mitre.org/techniques/T1176/"
100
101
102[rule.threat.tactic]
103id = "TA0003"
104name = "Persistence"
105reference = "https://attack.mitre.org/tactics/TA0003/"
106[[rule.threat]]
107framework = "MITRE ATT&CK"
108[[rule.threat.technique]]
109id = "T1213"
110name = "Data from Information Repositories"
111reference = "https://attack.mitre.org/techniques/T1213/"
112
113
114[rule.threat.tactic]
115id = "TA0009"
116name = "Collection"
117reference = "https://attack.mitre.org/tactics/TA0009/"
118[[rule.threat_mappings]]
119framework = "MITRE ATLAS"
120version = "2026.08"
121[[rule.threat_mappings.threat]]
122framework = "MITRE ATLAS"
123[[rule.threat_mappings.threat.technique]]
124id = "AML.T0053"
125name = "AI Agent Tool Invocation"
126reference = "https://atlas.mitre.org/techniques/AML.T0053/"
127
128
129[rule.threat_mappings.threat.tactic]
130id = "AML.TA0005"
131name = "Execution"
132reference = "https://atlas.mitre.org/tactics/AML.TA0005/"
133[[rule.threat_mappings.threat]]
134framework = "MITRE ATLAS"
135[[rule.threat_mappings.threat.technique]]
136id = "AML.T0085"
137name = "Data from AI Services"
138reference = "https://atlas.mitre.org/techniques/AML.T0085/"
139
140
141[rule.threat_mappings.threat.tactic]
142id = "AML.TA0009"
143name = "Collection"
144reference = "https://atlas.mitre.org/tactics/AML.TA0009/"
145
146[rule.investigation_fields]
147field_names = [
148 "@timestamp",
149 "organization.id",
150 "user.id",
151 "user.email",
152 "openai_chatgpt_enterprise.codex_log.event_details.plugin_display_name",
153 "openai_chatgpt_enterprise.codex_log.event_details.plugin_name",
154 "openai_chatgpt_enterprise.codex_log.client_id",
155]
156
157[rule.new_terms]
158field = "new_terms_fields"
159value = [
160 "openai_chatgpt_enterprise.codex_log.event_details.plugin_display_name",
161 "openai_chatgpt_enterprise.codex_log.event_details.plugin_name",
162]
163[[rule.new_terms.history_window_start]]
164field = "history_window_start"
165value = "now-14d"
Triage and analysis
Investigating OpenAI ChatGPT Enterprise Unusual Codex Plugin Installed
A Codex plugin was installed for the first time for this plugin pair within the rule history window. Plugins can add connectors that pull mail, chat, or file content into Codex sessions.
Escalate when the plugin is not on the approved inventory, the installing user is unexpected, or nearby activity shows sensitive search bursts, MCP tool abuse, or access-token creation. Close as a false positive for approved connector rollouts.
Possible investigation steps
- Record
plugin_display_name,plugin_name, and the installing user (user.email/user.id). - Confirm whether the plugin is approved in your ChatGPT Enterprise or Codex workspace inventory.
- Review nearby Codex and app-log activity for the same user for MCP calls, Drive or Slack query bursts, or credential exposure.
- Search for the same plugin installed by other users to distinguish org-wide rollout from a single anomalous install.
False positive analysis
- Planned enablement of common plugins (Slack, Gmail, Google Drive) during onboarding or team pilots.
Response and remediation
- Remove unauthorized plugins, revoke related OAuth links, and review data accessed after the install.
- If sensitive data may have been retrieved, follow your data-incident process for the session window.
References
Related rules
- OpenAI ChatGPT Enterprise High Codex MCP Tool Diversity
- OpenAI ChatGPT Enterprise Unusual Codex MCP Tool Call
- OpenAI ChatGPT Enterprise Unusual MCP App Activity
- OpenAI ChatGPT Enterprise Google Drive Sensitive Query Burst
- OpenAI ChatGPT Enterprise Slack Query Burst