CINXE.COM
Cloaks | Libera Chat
<!DOCTYPE html> <html lang="en"><head> <link rel="preload" href="/static/fonts/comfortaa-v30-subset-regular.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/static/fonts/ubuntu-v15-latin-regular.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/static/fonts/ubuntu-v15-subset-500.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/static/img/libera-color.svg" as="image" type="image/svg+xml"> <meta charset="utf-8"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1" name="viewport"><!-- Begin Jekyll SEO tag v2.7.1 --> <title>Cloaks | Libera Chat</title> <meta name="generator" content="Jekyll v4.3.0" /> <meta property="og:title" content="Cloaks" /> <meta property="og:locale" content="en_GB" /> <meta name="description" content="A cloak is a custom hostmask that replaces your client hostname or IP address, as shown in IRC operational messages or /whois." /> <meta property="og:description" content="A cloak is a custom hostmask that replaces your client hostname or IP address, as shown in IRC operational messages or /whois." /> <link rel="canonical" href="https://libera.chat/guides/cloaks" /> <meta property="og:url" content="https://libera.chat/guides/cloaks" /> <meta property="og:site_name" content="Libera Chat" /> <meta property="og:type" content="article" /> <meta property="article:published_time" content="2024-11-22T23:13:23+00:00" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:title" content="Cloaks" /> <meta property="article:publisher" content="liberachat" /> <script type="application/ld+json"> {"description":"A cloak is a custom hostmask that replaces your client hostname or IP address, as shown in IRC operational messages or /whois.","headline":"Cloaks","dateModified":"2024-11-22T23:13:23+00:00","datePublished":"2024-11-22T23:13:23+00:00","url":"https://libera.chat/guides/cloaks","@type":"TechArticle","@context":"https://schema.org"}</script> <!-- End Jekyll SEO tag --> <link rel="alternate" type="application/atom+xml" title="Libera Chat News" href="/atom.xml"> <link rel="icon" type="image/svg+xml" href="/static/img/libera-color.svg"> <link rel="alternate icon" href="/favicon.ico"> <!-- Stylesheets --> <style>/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */ *,::after,::before{box-sizing:border-box}:root{-moz-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}body{font-family:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji'}hr{height:0;color:inherit}abbr[title]{text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}</style> <style>@font-face { /* comfortaa-regular - subset */ font-family: 'Comfortaa'; src: url('/static/fonts/comfortaa-v30-subset-regular.woff2') format('woff2'), url('/static/fonts/comfortaa-v30-subset-regular.woff') format('woff'), url('/static/fonts/comfortaa-v30-subset-regular.ttf') format('truetype'); font-style: normal; font-weight: 400; font-display: swap; /* . C L a b e h i r t */ unicode-range: U+002E, U+0043, U+004C, U+0061-0062, U+0065, U+0068-0069, U+0072, U+0074; } @font-face { /* ubuntu-regular - latin */ font-family: 'Ubuntu'; src: local(''), url('/static/fonts/ubuntu-v15-latin-regular.woff2') format('woff2'), url('/static/fonts/ubuntu-v15-latin-regular.woff') format('woff'), url('/static/fonts/ubuntu-v15-latin-regular.ttf') format('truetype'); font-style: normal; font-weight: 400; font-display: swap; } @font-face { /* ubuntu-500 - subset */ font-family: 'Ubuntu'; src: local(''), url('/static/fonts/ubuntu-v15-subset-500.woff2') format('woff2'), url('/static/fonts/ubuntu-v15-subset-500.woff') format('woff'), url('/static/fonts/ubuntu-v15-subset-500.ttf') format('truetype'); font-style: normal; font-weight: 500; font-display: swap; /* C c e n o t */ unicode-range: U+0043 U+0063 U+0065 U+006E U+006F U+0074; } :root { --header-height: 4rem; --content-inline-padding: 1.3rem; --content-max-width: 80ch; /* define our palette for all themes */ --white: #fff; --gray-100: #f3f4f6; --gray-200: #e5e7eb; --gray-300: #d1d5db; --gray-400: #9ca3af; --gray-800: #1f2937; --gray-900: #111827; --brand-purple: #5555ff; --brand-pink: #ff55dd; /* light-theme vars */ --c-bg: var(--gray-100); --c-bg-secondary: var(--white); --c-text: var(--gray-800); --c-border: var(--gray-300); --c-hl: var(--brand-pink); --c-hl-secondary: var(--brand-purple); --c-text-on-hl: var(--gray-800); --c-text-on-hl-secondary: var(--white); } @media (prefers-color-scheme: dark) { :root { --c-bg: var(--gray-800); --c-bg-secondary: var(--gray-900); --c-text: var(--gray-200); --c-border: var(--gray-400); } } * { color: var(--c-text); box-sizing: border-box; font-family: Ubuntu, sans-serif; letter-spacing: .1ch; } main *, .hero * { line-height: 1.5; } body { background-color: var(--c-bg); min-height: 100vh; display: grid; grid-template-rows: var(--header-height) min-content auto auto min-content; grid-template-columns: 1fr; grid-template-areas: "header" "hero" "main" "aside" "footer"; } a { text-decoration: underline; text-underline-offset: .05rem; } a:hover { text-underline-offset: .25rem; color: var(--c-hl); } h1, h2, h3, h4, h5, h6, p { word-break: break-word; scroll-margin-block-start: 4.5rem; } h1, h2, h3, h4, h5, h6, strong { font-weight: 500; } em { font-style: italic; } h1, h2, h3, h4, h5, h6 { margin-block-end: 0; text-wrap: balance; } h1+*, h2+*, h3+*, h4+*, h5+*, h6+* { margin-block-start: 0; } main h1 { font-size: 2.25rem; } main h2 { font-size: 1.5rem; } main h3 { font-size: 1.25rem; } main :is(h2, h3, h4, h5, h6) a { text-decoration: none; position: relative; } main :is(h2, h3, h4, h5, h6) a:hover::before { content: '#'; position: absolute; left: -1.5ch; bottom: 0; font-weight: normal; font-size: 1rem; } @media screen and (min-width: 800px) { body { grid-template-columns: min-content 8fr; grid-template-rows: 4rem min-content auto min-content; grid-template-areas: "header header" "hero hero" "aside main" "footer footer"; } } .skiplink { z-index: 9999; transform: translateY(calc(-100% - 1rem)); display: block; position: absolute; height: 4rem; padding: var(--content-inline-padding); background-color: var(--c-bg); border-inline-end: 1px solid var(--c-border); border-block-end: 1px solid var(--c-border); } .skiplink:focus { z-index: 9999; transform: translateY(0); } header { grid-area: header; height: var(--header-height); border-block-end: 1px solid var(--c-border); background-color: var(--c-bg-secondary); position: sticky; top: 0; z-index: 1000; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; } header a { text-decoration: none; } header .logo { display: flex; flex-wrap: nowrap; align-items: center; height: 100%; padding-inline-start: var(--content-inline-padding); } header .logo img { padding-block-end: .3rem; } header .logo h1 { margin: 0; margin-bottom: -.4rem; font-size: 1.7rem; line-height: 1; font-family: Comfortaa, Ubuntu, sans-serif; font-weight: bold; } header .nav-toggle { display: block; border-inline-start: 1px solid var(--c-border); padding: 0 1rem; display: flex; align-items: center; cursor: pointer; } header nav details summary, header nav a { border-block-end: 1px solid var(--c-border); padding: 1rem; display: flex; align-items: center; cursor: pointer; white-space: nowrap; } header nav details summary::before { content: "►"; padding-inline-end: .3rem; } header nav details[open] summary::before { content: "▼"; } header nav .nav-close { display: none; } header nav.show .nav-close { display: flex; } header nav { transform: translateY(calc(-100% - 1rem)); display: flex; flex-direction: column; justify-content: flex-start; position: fixed; right: 0; top: 0; bottom: 0; background-color: var(--c-bg-secondary); min-width: 20rem; max-width: 30rem; border-inline-start: 1px solid var(--c-border); z-index: 10000; } header nav.show, header nav:focus-within { transform: translateY(0); } header nav details summary.highlight, header nav a.highlight { background-color: var(--c-hl); color: var(--c-text-on-hl); font-weight: 500; } header nav details summary:hover, header nav a:hover { background-color: var(--c-bg); } header nav details summary.highlight:hover, header nav a.highlight:hover { background-color: var(--c-hl-secondary); color: var(--c-text-on-hl-secondary); } header nav details { display: flex; flex-direction: column; position: relative; } header nav details a { padding-inline-start: 2.5rem; } @media screen and (min-width: 950px) { header .nav-toggle, header .nav-close, header nav.show .nav-close { display: none; } header nav { transform: initial; display: flex; flex-direction: row; justify-content: flex-end; position: initial; background-color: initial; min-width: unset; max-width: unset; border-inline-start: none; } header nav.show, header nav:focus-within { transform: initial; } header nav details summary, header nav a { border-block-end: none; border-inline-start: 1px solid var(--c-border); border-inline-end: 1px solid var(--c-border); padding: 0 1rem; display: flex; margin-inline-start: -1px; align-items: center; height: 100%; } header nav details:last-of-type summary { border-inline-end: none; } header nav details[open] summary { border-block-end: 1px solid var(--c-border); height: calc(100% + 1px); } header nav details div { position: absolute; right: 0; } header nav details div a { background-color: var(--c-bg-secondary); border-block-end: 1px solid var(--c-border); padding: 1rem; } } main { grid-area: main; padding: 0 var(--content-inline-padding); max-width: var(--content-max-width); min-width: 0; width: 100%; margin: 2rem auto; } nav.article-nav { display: flex; flex-direction: row; justify-content: center; } nav.article-nav div { width: 33%; text-align: center; } footer { grid-area: footer; align-self: end; background-color: var(--c-bg-secondary); border-block-start: 1px solid var(--c-border); padding: .5rem var(--content-inline-padding); display: flex; flex-direction: row; flex-wrap: wrap; justify-content: space-between; } footer div { line-height: 2; } footer div .mobile-hide { display: none; } footer div a { white-space: nowrap; } footer div a:not([rel*=license]), footer div .copyright { display: block; } @media screen and (min-width: 800px) { footer div { line-height: 1.5; } footer div:last-of-type { padding-inline-start: 1rem; } footer div .mobile-hide { display: inline; } footer div a:not([rel*=license]), footer div .copyright { display: initial; } } </style> <style>aside { grid-area: aside; background-color: var(--c-bg-secondary); /* padding: var(--content-inline-padding); */ border-block-start: 1px solid var(--c-border); width: 100%; height: min-content; align-self: end; display: flex; flex-direction: column; justify-content: flex-start; min-width: 30ch; overflow-y: auto; } aside .title { margin-block-end: 0; margin-inline: var(--content-inline-padding); margin-block-start: 1rem; margin-block-end: .5rem; font-size: 2rem; font-weight: 500; } aside details:not(:last-child) { border-block-end: 1px solid var(--c-border); } aside details summary, aside a { padding: 1rem; display: flex; align-items: center; cursor: pointer; white-space: nowrap; } aside a { text-decoration: none; } aside details summary::before { content: "►"; padding-inline-end: .3rem; } aside details[open] summary::before { content: "▼"; } aside details summary:hover, aside a:hover, aside a.active { background-color: var(--c-bg); } aside details { display: flex; flex-direction: column; position: relative; } aside details a { padding-inline-start: 2.5rem; } @media screen and (min-width: 800px) { aside { border-block-start: none; border-inline-end: 1px solid var(--c-border); width: max-content; height: 100%; } } </style> <link rel="stylesheet" href="/static/css/additional-styles.css"> <script src="/static/js/header-links.js" defer></script> </head> <body><a class="skiplink" href="#main">Skip to content</a> <header> <a class="logo" href="https://libera.chat" aria-label="Libera Chat, back to start page"> <img alt="" src="/static/img/libera-color.svg" height="48px" data-proofer-ignore> <h1>Libera.​Chat</h1> </a> <a id="nav-toggle" class="nav-toggle hidden" aria-controls="main-nav"><span>Navigation</span></a> <nav class="" id="main-nav" aria-labelledby="nav-toggle" role="menubar"> <a id="nav-close" class="nav-close hidden" aria-controls="main-nav"><span>Close</span></a> <details name="main-navigation"> <summary >About</summary> <div> <a role="menuitem" href="/policies" ><span>Network Policies</span></a> <a role="menuitem" href="/guidelines" ><span>Channel Guidelines</span></a> <a role="menuitem" href="/news" ><span>Blog & News</span></a> <a role="menuitem" href="/about" ><span>About Libera Chat</span></a> <a role="menuitem" href="/bylaws" ><span>Bylaws</span></a> <a role="menuitem" href="/minutes" ><span>Meeting Minutes</span></a> <a role="menuitem" href="/annual-reports" ><span>Annual Reports</span></a> <a role="menuitem" href="/sponsors" ><span>Sponsors</span></a> </div> </details> <details name="main-navigation"> <summary >Contribute</summary> <div> <a role="menuitem" href="/contributing/donate" ><span>Donate</span></a> <a role="menuitem" href="/contributing/merch" ><span>Buy merch</span></a> <a role="menuitem" href="/contributing/sponsor" ><span>Sponsor Us</span></a> <a role="menuitem" href="/contributing/development" ><span>Development</span></a> </div> </details> <a role="menuitem" href="/chanreg"><span>Channel Namespaces</span></a> <a role="menuitem" href="/guides"><span>Guides</span></a> <a role="menuitem" href="/guides/faq"><span>FAQ</span></a> <details name="main-navigation"> <summary class="highlight" >Connect</summary> <div> <a role="menuitem" href="https://web.libera.chat" rel="noopener noreferrer" ><span>Webchat</span></a> <a role="menuitem" href="ircs://irc.libera.chat:6697" ><span>irc.libera.chat:6697 (TLS)</span></a> <a role="menuitem" href="/guides/connect" ><span>How to Connect</span></a> </div> </details> </nav> </header> <script async> const navToggle = document.querySelector('#nav-toggle') const navClose = document.querySelector('#nav-close') const mainNav = document.querySelector('#main-nav') // progressive enhancement! navToggle.classList.remove('hidden') navClose.classList.remove('hidden') navToggle.addEventListener('click', event => { event.preventDefault() mainNav.classList.toggle('show') }) navClose.addEventListener('click', event => { event.preventDefault() mainNav.classList.remove('show') }) </script> <aside role="menu"> <span class="title">Guides</span> <details open> <summary>About IRC</summary> <div> <a role="menuitem" href="/guides/basics" ><span>Basics of IRC</span></a> <a role="menuitem" href="/guides/faq" ><span>Frequently Asked Questions</span></a> <a role="menuitem" href="/guides/clients" ><span>Choosing an IRC client</span></a> </div> </details> <details open> <summary>Helping you connect</summary> <div> <a role="menuitem" href="/guides/connect" ><span>Connecting to Libera.Chat</span></a> <a role="menuitem" href="/guides/webchat" ><span>Using Our Webchat</span></a> <a role="menuitem" href="/guides/sasl" ><span>Using SASL</span></a> <a role="menuitem" href="/guides/certfp" ><span>Using CertFP</span></a> </div> </details> <details open> <summary>Using the network</summary> <div> <a role="menuitem" href="/guides/registration" ><span>Nickname Registration</span></a> <a role="menuitem" href="/guides/sendpass" ><span>Resetting your Password</span></a> <a role="menuitem" href="/guides/account" ><span>Manage Your Account</span></a> <a role="menuitem" class="active" href="/guides/cloaks" ><span>Cloaks</span></a> <a role="menuitem" href="/guides/findingchannels" ><span>Finding Channels</span></a> <a role="menuitem" href="/guides/channels" ><span>Using Channels</span></a> <a role="menuitem" href="/guides/usermodes" ><span>User Modes</span></a> </div> </details> <details open> <summary>Running a channel</summary> <div> <a role="menuitem" href="/guides/creatingchannels" ><span>Creating Channels</span></a> <a role="menuitem" href="/guides/channelmodes" ><span>Channel Modes</span></a> <a role="menuitem" href="/guides/quickops" ><span>Quick Ops Guide</span></a> <a role="menuitem" href="/guides/bots" ><span>Network bots</span></a> <a role="menuitem" href="/guides/catalyst" ><span>Catalysing and De-escalation</span></a> <a role="menuitem" href="/guides/helpers" ><span>Advice for Helpers</span></a> </div> </details> </aside> <main id="main"> <h1>Cloaks</h1> <p>A cloak is a custom hostmask that replaces your client hostname or IP address, as shown in IRC operational messages or <code class="language-plaintext highlighter-rouge">/whois</code>.</p> <p>For example, the hostmask <code class="language-plaintext highlighter-rouge">jsmith@10-10-32-1.res.dsl.example.com</code> might appear with a cloak as <code class="language-plaintext highlighter-rouge">jsmith@user/jsmith</code>.</p> <p>A cloak can help other users and bots identify you simply and consistently. It can also help limit the exposure of your IP address on the network, although it does not necessarily provide anonymity or prevent the discovery of your IP address, see <a href="#limitations-of-cloaks">below</a>.</p> <p>As an individual, you can get a generic user cloak in the form of <code class="language-plaintext highlighter-rouge">user/<your-account-name></code>. If you are involved with a registered project or community, you may be able to get a cloak that indicates your affiliation with that group.</p> <p>You may also sometimes see some temporary or <code class="language-plaintext highlighter-rouge">gateway</code> cloaks associated with gateway services, such as when using our <a href="/guides/connect#accessing-liberachat-via-tor">Tor hidden service</a>. These only last for the duration that the user is connected through that service and help users of the service be differentiated from each other. You cannot request these cloaks.</p> <h2 id="generic-user-cloaks">Generic user cloaks</h2> <p>Accounts registered after March 2024 that have a verified email address are automatically assigned a generic user cloak. If your account does not currently have a cloak, you may <a href="/guides/faq#how-to-find-libera-chat-staff">contact staff</a> to receive one.</p> <p>If your account name (the nickname you registered with) contains characters that are not valid in a hostname (e.g. underscores or brackets), a colon and number will be added to the end to help ensure uniqueness. If you have a generic user cloak and you wish to change the nickname in it to reflect a change in account name, you will need to <a href="/guides/faq#how-to-find-libera-chat-staff">contact staff</a>. This is to prevent abuse.</p> <h3 id="generic-bot-cloaks">Generic bot cloaks</h3> <p>If you run a bot on the network, it is encouraged to register an account for it that is separate from your personal user account. It is also encouraged to get a bot cloak for your bot’s account by <a href="/guides/faq#how-to-find-libera-chat-staff">contacting staff</a>. Staff will likely ask you to verify that you own the account by having you PM a specific message from the bot (or a connection using its account).</p> <p>Bot cloaks look like <code class="language-plaintext highlighter-rouge">user/<your-account-name>/bot/<bot-account-name></code> and help others to find you if something goes wrong with the bot.</p> <h2 id="project-or-community-cloaks">Project or community cloaks</h2> <p><a href="/chanreg#what-is-on-topic">Projects and communities</a> that are aligned with our mission are eligible for group registrations. One of the perks of group registration is the ability to request cloaks for participants.</p> <h3 id="getting-project-or-community-cloaks">Getting project or community cloaks</h3> <p>If you are involved with a registered project or community, you may request a cloak indicating your affiliation. Rules and procedures for project or community cloaks vary by group. For help with this, ask a group contact for your project or community. If your project has listed group contacts publicly, they will be listed as “Public contacts” in <code class="language-plaintext highlighter-rouge">/msg ChanServ INFO <channel></code>. If not, ask for help in the relevant channel.</p> <h3 id="instructions-for-group-contacts">Instructions for Group Contacts</h3> <p>If your project or community has had an official group registration approved, then you are probably able to request cloaks for your users and contributors. Registered projects are represented by Group Contacts (also known as GCs). Only these people have the right to request cloaks for group members. If you are a GC, then you will have a standing invite to <code class="language-plaintext highlighter-rouge">#libera-communities</code> where you may request cloaks for projects that you are a registered GC for.</p> <p>While it is not mandatory, we do recommend having some internal standards for your users to meet to be eligible for your project’s cloaks. Bearers of your cloaks are seen by others as representatives of your community and as such the bearer’s behaviour will reflect onto the reputation of your project or community.</p> <h2 id="re-identifying-with-nickserv">Re-identifying with NickServ</h2> <p>Assigned cloaks must be associated with an account and will not appear if you are not identified. If you are not <a href="/guides/sasl">using SASL</a> or a server password in your client, you may need to re-identify with <code class="language-plaintext highlighter-rouge">NickServ</code> before getting cloaked or before the cloak is active. See <code class="language-plaintext highlighter-rouge">/msg NickServ HELP IDENTIFY</code> for more information.</p> <h2 id="checking-your-cloak">Checking your cloak</h2> <p>You should see your cloaked hostmask in <code class="language-plaintext highlighter-rouge">/who <yournick></code>, in <code class="language-plaintext highlighter-rouge">/whois <yournick></code>, in <code class="language-plaintext highlighter-rouge">/join</code> or <code class="language-plaintext highlighter-rouge">/part</code> messages, and upon connection to the network.</p> <p>You may see your own IP address when you <code class="language-plaintext highlighter-rouge">/whois</code> yourself. This is visible only to you and network staff, and is not part of the hostmask visible to others users.</p> <h2 id="removing-your-cloak">Removing your cloak</h2> <p>Cloak removal is not automated. To remove your user cloak, <a href="/guides/faq#how-to-find-libera-chat-staff">contact staff</a> for help. You can also request for your project or community affiliation cloak to be reset to a generic user cloak. In most cases, staff will impose a cooldown of several weeks before you can personally request a cloak change again.</p> <h2 id="anonymity-and-privacy">Anonymity and privacy</h2> <p>Once you are cloaked, only you and Libera.Chat staff can see your connecting host. Staff will refuse requests to disclose the IP addresses, host names, or connection metadata of cloaked users as per Libera.Chat’s <a href="/privacy">privacy policy</a>.</p> <p>While a cloak helps limit the exposure of your IP address, other tools can more reliably provide a greater degree of privacy protection, including bouncers, cloud-based hosts, and Tor. To connect to Libera.Chat via Tor, see <a href="/guides/connect#accessing-liberachat-via-tor">Connecting to Libera.Chat</a>.</p> <p>Additionally, your IP address can be exposed if your client features a link preview feature, DCC functionality or similar.</p> <h3 id="limitations-of-cloaks">Limitations of cloaks</h3> <p>When using a cloak, it is strongly recommended to use <a href="/guides/sasl">SASL</a> instead of <code class="language-plaintext highlighter-rouge">/msg NickServ identify</code> to log into your account. SASL allows you to automatically log in and be cloaked before your connection is visible to the rest of the Libera.Chat network, which prevents IP address exposures like this from happening:</p> <pre><code class="language-irc">--> jsmith (~jsmith@10-10-32-1.res.dsl.example.com) has joined #channel <-- jsmith (~jsmith@10-10-32-1.res.dsl.example.com) has quit (Changing host) --> jsmith (~jsmith@user/jsmith) has joined #channel </code></pre> <p>When using SASL, consider ensuring that your client disconnects if it doesn’t authenticate; some clients do not do this by default and must be specifically configured to do so. This ensures that your IP address will not be exposed whenever <code class="language-plaintext highlighter-rouge">NickServ</code> is briefly unavailable due to maintenance.</p> </main><footer> <div> <span class="copyright">© Libera Chat's contributors 2021</span> (<a rel="license noopener noreferrer" href="/LICENSE-content.txt">Content CC BY-NC-SA</a>, <a rel="license noopener noreferrer" href="/LICENSE-code.txt">Code MIT</a>) <span class="mobile-hide">/</span> <a href="/atom.xml">Feed (atom)</a> <span class="mobile-hide">/</span> <a href="/privacy">Privacy</a> </div> <div> <a rel="me noopener noreferrer" href="https://fosstodon.org/@liberachat">Mastodon</a> <span class="mobile-hide">/</span> <a href="https://github.com/Libera-Chat/libera-chat.github.io" rel="noopener noreferrer">GitHub</a> <span class="mobile-hide">/</span> <a href="https://bsky.app/profile/libera.chat" rel="noopener noreferrer">Bluesky</a> <span class="mobile-hide">/</span> <a href="https://facebook.com/liberachat" rel="noopener noreferrer">Facebook</a> </div> </footer>