OpenAI ChatGPT Enterprise Custom Agent Published
Detects ChatGPT Enterprise custom-agent publish events (agent_published). Publishing an agent with connectors,
skills, or store visibility can establish durable automation and broaden data access beyond the original user.
Elastic rule (View on GitHub)
1[metadata]
2creation_date = "2026/10/06"
3integration = ["openai_chatgpt_enterprise"]
4maturity = "production"
5updated_date = "2026/10/06"
6
7[rule]
8author = ["Elastic"]
9description = """
10Detects ChatGPT Enterprise custom-agent publish events (`agent_published`). Publishing an agent with connectors,
11skills, or store visibility can establish durable automation and broaden data access beyond the original user.
12"""
13false_positives = [
14 "Platform teams publish approved custom agents during workspace rollouts.",
15]
16from = "now-9m"
17language = "esql"
18license = "Elastic License v2"
19name = "OpenAI ChatGPT Enterprise Custom Agent Published"
20note = """## Triage and analysis
21
22### Investigating OpenAI ChatGPT Enterprise Custom Agent Published
23
24A custom agent was published. Published agents with connectors, skills, and store visibility can establish durable automation and broaden data access.
25
26Escalate when visibility is broader than expected, connectors are sensitive, or the publisher is not authorized to release agents. Close as a false positive for approved platform rollouts.
27
28#### Possible investigation steps
29
30- Identify the actor and agent identifiers on the alert.
31- Review connectors, skills, store visibility, and any release notes or description fields.
32- Confirm whether publication matches an approved change request.
33- Look for related trigger creation or OAuth link events from the same actor.
34
35### False positive analysis
36
37- Platform teams publish approved custom agents during controlled workspace rollouts.
38
39### Response and remediation
40
41- Unpublish or delete unauthorized agents and revoke connected OAuth links.
42- Review recent agent runs if the agent may already have executed.
43"""
44references = [
45 "https://www.elastic.co/docs/reference/integrations/openai_chatgpt_enterprise",
46 "https://platform.openai.com/docs/compliance",
47]
48risk_score = 47
49rule_id = "c73d406c-4399-40f2-a255-4a42f8ead9e0"
50setup = """## Setup
51
52This rule requires the OpenAI ChatGPT Enterprise integration to collect compliance logs into Elasticsearch.
53
54https://www.elastic.co/docs/reference/integrations/openai_chatgpt_enterprise
55"""
56severity = "medium"
57tags = [
58 "Domain: GenAI",
59 "Platform: OpenAI",
60 "Data Source: OpenAI ChatGPT Enterprise",
61 "Service: OpenAI ChatGPT Enterprise",
62 "Use Case: Threat Detection",
63 "Resources: Investigation Guide",
64 "Rule Type: ES|QL",
65 "Tactic: Persistence",
66 "Mitre Atlas: AML.T0081",
67]
68timestamp_override = "event.ingested"
69type = "esql"
70
71query = '''
72from logs-openai_chatgpt_enterprise.custom_agents_log-* metadata _id, _version, _index
73| where
74 data_stream.dataset == "openai_chatgpt_enterprise.custom_agents_log" and
75 event.action == "agent_published"
76| keep
77 _id, _version, _index, @timestamp, event.action, user.id, user.email,
78 gen_ai.agent.id,
79 openai_chatgpt_enterprise.custom_agents_log.client_id,
80 openai_chatgpt_enterprise.custom_agents_log.event_details.publish_type,
81 openai_chatgpt_enterprise.custom_agents_log.event_details.release_name,
82 openai_chatgpt_enterprise.custom_agents_log.event_details.agent_fields.store_visible,
83 openai_chatgpt_enterprise.custom_agents_log.event_details.agent_fields.workspace_capability,
84 data_stream.*
85'''
86
87
88[[rule.threat]]
89framework = "MITRE ATT&CK"
90[[rule.threat.technique]]
91id = "T1176"
92name = "Software Extensions"
93reference = "https://attack.mitre.org/techniques/T1176/"
94
95
96[rule.threat.tactic]
97id = "TA0003"
98name = "Persistence"
99reference = "https://attack.mitre.org/tactics/TA0003/"
100
101[[rule.threat_mappings]]
102framework = "MITRE ATLAS"
103version = "2026.08"
104[[rule.threat_mappings.threat]]
105framework = "MITRE ATLAS"
106[[rule.threat_mappings.threat.technique]]
107id = "AML.T0081"
108name = "Modify AI Agent Configuration"
109reference = "https://atlas.mitre.org/techniques/AML.T0081/"
110
111
112[rule.threat_mappings.threat.tactic]
113id = "AML.TA0006"
114name = "Persistence"
115reference = "https://atlas.mitre.org/tactics/AML.TA0006/"
116
117[rule.investigation_fields]
118field_names = [
119 "@timestamp",
120 "event.action",
121 "user.id",
122 "gen_ai.agent.id",
123 "openai_chatgpt_enterprise.custom_agents_log.event_details.agent_fields.store_visible",
124 "openai_chatgpt_enterprise.custom_agents_log.event_details.publish_type",
125]
Triage and analysis
Investigating OpenAI ChatGPT Enterprise Custom Agent Published
A custom agent was published. Published agents with connectors, skills, and store visibility can establish durable automation and broaden data access.
Escalate when visibility is broader than expected, connectors are sensitive, or the publisher is not authorized to release agents. Close as a false positive for approved platform rollouts.
Possible investigation steps
- Identify the actor and agent identifiers on the alert.
- Review connectors, skills, store visibility, and any release notes or description fields.
- Confirm whether publication matches an approved change request.
- Look for related trigger creation or OAuth link events from the same actor.
False positive analysis
- Platform teams publish approved custom agents during controlled workspace rollouts.
Response and remediation
- Unpublish or delete unauthorized agents and revoke connected OAuth links.
- Review recent agent runs if the agent may already have executed.
References
Related rules
- OpenAI ChatGPT Enterprise App Authentication Linked
- OpenAI ChatGPT Enterprise Custom Agent Trigger Changed
- OpenAI ChatGPT Enterprise Workspace Feature Toggled
- OpenAI ChatGPT Enterprise Account Owner Role Assigned
- OpenAI ChatGPT Enterprise Codex Access Token Created