<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep xmlns=""><header>
<title>Group Chat Reporting</title>
<abstract>This specification describes how a client can report abuse and spam in a MUC or other group chat context.</abstract>

<legal>
<copyright>This XMPP Extension Protocol is copyright © 1999 – 2024 by the <link url="https://xmpp.org/">XMPP Standards Foundation</link> (XSF).</copyright>
<permissions>Permission is hereby granted, free of charge, to any person obtaining a copy of this specification (the "Specification"), to make use of the Specification without restriction, including without limitation the rights to implement the Specification in a software program, deploy the Specification in a network service, and copy, modify, merge, publish, translate, distribute, sublicense, or sell copies of the Specification, and to permit persons to whom the Specification is furnished to do so, subject to the condition that the foregoing copyright notice and this permission notice shall be included in all copies or substantial portions of the Specification. Unless separate permission is granted, modified works that are redistributed shall not contain misleading information regarding the authors, title, number, or publisher of the Specification, and shall not claim endorsement of the modified works by the authors, any organization or project to which the authors belong, or the XMPP Standards Foundation.</permissions>
<warranty>## NOTE WELL: This Specification is provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. ##</warranty>
<liability>In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall the XMPP Standards Foundation or any author of this Specification be liable for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising from, out of, or in connection with the Specification or the implementation, deployment, or other use of the Specification (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if the XMPP Standards Foundation or such author has been advised of the possibility of such damages.</liability>
<conformance>This XMPP Extension Protocol has been contributed in full conformance with the XSF's Intellectual Property Rights Policy (a copy of which can be found at &lt;<link url="https://xmpp.org/about/xsf/ipr-policy">https://xmpp.org/about/xsf/ipr-policy</link>&gt; or obtained by writing to XMPP Standards Foundation, P.O. Box 787, Parker, CO 80134 USA).</conformance>
</legal>
<number>xxxx</number>
<status>ProtoXEP</status>
<type>Standards Track</type>
<sig>Standards</sig>
<approver>Council</approver>
<dependencies/>
<supersedes/>
<supersededby/>
<shortname>gcreport</shortname>

  <author>
    <firstname>Matthew</firstname>
    <surname>Wild</surname>
    <email>mwild1@gmail.com</email>
    <jid>me@matthewwild.co.uk</jid>
  </author>

<revision>
<version>0.0.1</version>
<date>2026-03-31</date>
<initials>mjw</initials>
<remark>
</remark>
</revision>
</header>
<section1 topic="Introduction" anchor="intro">

<p>Abuse and spam are common issues on any open network. XMPP is no exception,
and we have a range of protocols and tools to tackle various aspects of the
problem. Until now, however, there has been no standard in-band way to report
abuse in group chats.</p>

<p>This specification describes a protocol to report messages as abuse/spam,
report problematic participants to group chat admins, and to report
problematic group chats to server admins.</p>

</section1><section1 topic="Requirements" anchor="reqs">

<p>The requirements this specification aims to meet include:</p>

<ul>
<li>Providing a way for a participant to report problematic messages and
participants to group chat admins, so the admins can take appropriate action
(such as banning the user).</li>
<li>Providing a way to report problematic group chats to the admins of a service.</li>
</ul>

<p>The specification aims to reuse existing protocol containers which fit the
data being transported. For example, it uses the report syntax from <span class="ref"><link url="https://xmpp.org/extensions/xep-0377.html">Blocking Command Reports (XEP-0377)</link></span> <note>XEP-0377: Spam Reporting &lt;<link url="https://xmpp.org/extensions/xep-0377.html">https://xmpp.org/extensions/xep-0377.html</link>&gt;.</note>.</p>

<p>The protocol is designed to work within the context of <span class="ref"><link url="https://xmpp.org/extensions/xep-0045.html">Multi-User Chat (XEP-0045)</link></span> <note>XEP-0045: Multi-User Chat &lt;<link url="https://xmpp.org/extensions/xep-0045.html">https://xmpp.org/extensions/xep-0045.html</link>&gt;.</note> or any
group chat protocol that uses <span class="ref"><link url="https://xmpp.org/extensions/xep-0421.html">Anonymous unique occupant identifiers for MUCs (XEP-0421)</link></span> <note>XEP-0421: Anonymous unique occupant identifiers for MUCs &lt;<link url="https://xmpp.org/extensions/xep-0421.html">https://xmpp.org/extensions/xep-0421.html</link>&gt;.</note> to identify occupants and uses JIDs to
identify group chats.</p>

</section1><section1 topic="Use Cases" anchor="usecases">

<section2 topic="Reporting participants and messages" anchor="reporting-participants-and-messages">

<example caption="Bad participant sends spam to a group chat"><![CDATA[<message to="chat@rooms.example.com" from="chat@rooms.example.com/spammer" type="groupchat">
    <body>Click here to win $$$$: https://malware.example/buy-now</body>
    <stanza-id id="019d29fc-bbcb-7920-93c2-64053721aa7b" by="chat@rooms.example.com" xmlns='urn:xmpp:sid:0'/>
</message>]]></example>

<p>A participant in the chat reports this message, e.g. so it can be moderated using <span class="ref"><link url="https://xmpp.org/extensions/xep-0425.html">Message Moderation (XEP-0425)</link></span> <note>XEP-0425: Message Moderation &lt;<link url="https://xmpp.org/extensions/xep-0425.html">https://xmpp.org/extensions/xep-0425.html</link>&gt;.</note> and the sender banned.</p>

<example caption="Good participant submits a report"><![CDATA[<iq type="set" to="chat@rooms.example.com" id="report1">
    <report-participant xmlns='urn:xmpp:gcreport:0'>
        <occupant-id xmlns="urn:xmpp:occupant-id:0" id="dd72603deec90a38ba552f7c68cbcc61bca202cd" />
        <report xmlns='urn:xmpp:reporting:1' reason='urn:xmpp:reporting:spam'>
            <stanza-id id="019d29fc-bbcb-7920-93c2-64053721aa7b" by="chat@rooms.example.com" xmlns='urn:xmpp:sid:0'/>
            <text xml:lang='en'>Malware distribution</text>
        </report>
    </report-participant>
</iq>]]></example>

<p>Reporting happens via an &lt;iq/&gt; of type 'set' containing a &lt;submit/&gt;
payload element qualified by the 'urn:xmpp:gcreport:0' namespace.</p>

<p>The &lt;submit/&gt; element MUST contain one &lt;occupant-id/&gt; (defined
in XEP-0421) which identifies the participant being reported.</p>

<p>It MUST also contain a single &lt;report/&gt; element, as defined by XEP-0377.</p>

<p>Per the rules of XEP-0377, the &lt;stanza-id/&gt; element is not required, but
SHOULD be included if the reporter is reporting a specific message. This can
help provide additional context to the recipients of the report, which helps
improve incident resolution times. When provided, the referenced stanza MUST
be a stanza sent by the reported participant, otherwise the server SHOULD
ignore it.</p>

</section2><section2 topic="Reporting chats" anchor="reporting-chats">

<p>In some cases, a user may want to report an entire group chat to the server
operator. For example, if the chat, its subject or administrators violate the
server’s policies.</p>

<example caption="Concerned user reports a chat to the server"><![CDATA[<iq type='set' to='rooms.example.com' id='report1'>
    <report-chat xmlns='urn:xmpp:gcreport:0'>
        <jid>chat@rooms.example.com</jid>
        <report xmlns='urn:xmpp:reporting:1' reason='urn:xmpp:reporting:abuse'>
            <text xml:lang='en'>This channel violates the server's policy</text>
        </report>
    </report-chat>
</iq>]]></example>

<p>Reports about a group chat are sent via an &lt;iq/&gt; of type 'set' to the
MUC service JID. The payload of the stanza MUST be a &lt;report-chat/&gt;
element qualified by the 'urn:xmpp:gcreport:0' namespace.</p>

<p>Within this element MUST be a single &lt;jid/&gt; element (also in the
'urn:xmpp:gcreport:0' namespace).</p>

<p>Finally, a single &lt;report/&gt; element (as defined in XEP-0377) MUST be
included, specifying the reason for the report and any supporting evidence.</p>

</section2><section2 topic="Discovering support" anchor="discovering-support">

<p>Group chats which support reporting participants and services which support
reporting chats MUST both advertise the 'urn:xmpp:gcreport:0' feature in their
XEP-0030 service discovery features.</p>

</section2></section1><section1 topic="Business Rules" anchor="rules">

<p>Upon receipt of a report, a service SHOULD perform an appropriate action, such
as immediately notifying appropriate people in an appropriate manner, and/or
automatically moderating reported messages or hiding groups from public
listings. Any automated actions MUST be reversible upon review,to minimise the
consequences of malicious reports.</p>

<p>For reports about participants, JIDs with an affiliation of 'owner' or 'admin'
are generally the appropriate recipients of any report notifications.</p>

<p>For reports about chats, the responsible entity is usually the server
administrator</p>

<p>However, this XEP does not mandate any specific actions as the appropriate
action may depend on context such as the nature of the deployment, the
reporter and the reported entity.</p>

</section1><section1 topic="Accessibility Considerations" anchor="access">

<p>No special accessibility concerns have been identified.</p>

</section1><section1 topic="Internationalization Considerations" anchor="i18n">

<p>None.</p>

</section1><section1 topic="Security Considerations" anchor="security">

<p>Implementations MUST consider various attack vectors in reporting systems
built upon this protocol. This includes:</p>

<ul>
<li>Malicious/false reports</li>
<li>Flooding (rapid submission of reports; leading to overloading of the service or its operators)</li>
</ul>

<p>These issues can typically be tackled using standard techniques such as rate
limiting, and trust-based approaches based on the reporter (for example,
reports from long-standing affiliated members may take priority over reports
from new/untrusted users).</p>

</section1><section1 topic="Privacy Considerations" anchor="privacy">

<p>When processing reports, servers MUST consider the privacy of the reporter.
Appropriate measures would include anonymization (including at least removal
of the reporter’s JID) before forwarding the report to any third parties (such
as a server where the abuse originated). If abuse originates from a remote
server (e.g. a reported user hosts their account there), it cannot be assumed
that the remote server can necessarily be trusted.</p>

<p>Likewise, the privacy of reported entities MUST also be considered - not least
because false and malicious reports are entirely possible within this
protocol. Servers MUST NOT cause any private data to be exposed to untrusted
entities in response to a report.</p>

</section1><section1 topic="IANA Considerations" anchor="iana">

<p>None.</p>

</section1><section1 topic="XMPP Registrar Considerations" anchor="registrar">

<p>None.</p>

</section1><section1 topic="Design Considerations" anchor="design">

<p>This document aims to fill a gap in spam/abuse reporting, which already works
well for direct (one-to-one) chats. It reuses existing protocols which have
already been widely implemented and deployed.</p>

</section1><section1 topic="XML Schema" anchor="schema">

<p>TBD.</p>
</section1>
</xep>
