Copyright © 2013 Christine Dodrill <firstname.lastname@example.org>
Copyright © 2016 Ryan <email@example.com>
Copyright © 2020 James Wheare <firstname.lastname@example.org>
Unlimited redistribution and modification of this document is allowed provided that the above copyright notice and this permission notice remains intact.
chghost capability allows servers to send a notification when clients change their username or host. This mechanism avoids simulating a reconnect of the client. This is useful for servers that implement virtual hosts or cloaks, and helps to reduce clutter in client UI.
When a client username or host is changed, servers MUST send the
CHGHOST message to other clients who share channels with the target client and who have enabled the
chghost capability. Servers SHOULD also send the
CHGHOST message to the client whose own username or host changed, if that client also supports the
CHGHOST message is as follows:
:nick!old_user@old_host.local CHGHOST new_user new_host.local
new_user parameter represents the user’s username.
new_host.local parameter represents the user’s hostname.
One or both of the username and hostname can change during the CHGHOST process.
Servers that implement ident checking might choose to prefix a username with a tilde
~ character to indicate missing confirmation from an ident server. This MUST be considered part of the username and included in any CHGHOST messages where relevant.
:nick!~old_user@old_host.local CHGHOST ~new_user new_host.local
chghostcapability has not been negotiated 🔗
When the capability is not enabled for other clients who share channels with the changed client, servers SHOULD send fallback messages to simulate the client reconnecting. This allows clients to keep their user state up to date. For shared channels, the simulated events SHOULD include appropriate
MODE commands, to restore membership and user channel modes.
:nick!old_user@old_host.local QUIT :Changing hostname :nick!new_user@new_host.local JOIN #ircv3 :ircd.local MODE #ircv3 +v :nick
In this example,
tim!~toolshed@backyard gets their username changed to
~b and their hostname changed to
ckyard. Their new user mask is
:tim!~toolshed@backyard CHGHOST ~b ckyard
In this example,
tim!b@ckyard gets their username changed to
toolshed and their hostname changed to
backyard. Their new user mask is
:tim!b@ckyard CHGHOST toolshed backyard
~prefix should be included on CHGHOST messages. The new examples make clear that it should be included.
Software supporting chghost: Ergo, ircd-hybrid, InspIRCd, Solanum, txircd, UnrealIRCd, AdiIRC, Ambassador, catgirl, Colloquy, Glirc, HexChat, IceChat, Irssi, Konversation, KVIrc, mIRC, Quassel, Textual, WeeChat, gamja, IRCCloud, Kiwi IRC, The Lounge, PIRC.pl web client, CoreIRC, Palaver, Quasseldroid, pounce (as Server), pounce (as Client), soju (as Server), soju (as Client), BitBot, Eggdrop, Limnoria, Moon Moon, ChatSharp, Communi, girc, irc-framework, ircrobots, Kitteh IRC Client Library, pydle, Rust irc, Warren, Heisenbridge (bouncer mode), PyLink (clientbot mode)