CINXE.COM
GitHub Status - Incident History
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- force IE browsers in compatibility mode to use their most aggressive rendering engine --> <meta charset="utf-8"> <title>GitHub Status - Incident History</title> <meta name="description" content="GitHub's Incident and Scheduled Maintenance History"> <!-- Mobile viewport optimization --> <meta name="HandheldFriendly" content="True"> <meta name="MobileOptimized" content="320"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> <!-- Time this page was rendered - http://purl.org/dc/terms/issued --> <meta name="issued" content="1743143122"> <!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading --> <meta http-equiv="cleartype" content="on"> <!-- Le fonts --> <style> @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-f0b2f7c12b6b87c65c02d3c1738047ea67a7607fd767056d8a2964cc6a2393f7.eot?host=www.githubstatus.com'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-f0b2f7c12b6b87c65c02d3c1738047ea67a7607fd767056d8a2964cc6a2393f7.eot?host=www.githubstatus.com#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-e642ffe82005c6208632538a557e7f5dccb835c0303b06f17f55ccf567907241.woff?host=www.githubstatus.com') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-0f094da9b301d03292f97db5544142a16f9f2ddf50af91d44753d9310c194c5f.ttf?host=www.githubstatus.com') format('truetype'); font-weight:300; font-style:normal; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-366d17769d864aa72f27defaddf591e460a1de4984bb24dacea57a9fc1d14878.eot?host=www.githubstatus.com'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-366d17769d864aa72f27defaddf591e460a1de4984bb24dacea57a9fc1d14878.eot?host=www.githubstatus.com#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-2ee4c449a9ed716f1d88207bd1094e21b69e2818b5cd36b28ad809dc1924ec54.woff?host=www.githubstatus.com') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-a40a469edbd27b65b845b8000d47445a17def8ba677f4eb836ad1808f7495173.ttf?host=www.githubstatus.com') format('truetype'); font-weight:400; font-style:normal; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0bf83a850b45e4ccda15bd04691e3c47ae84fec3588363b53618bd275a98cbb7.eot?host=www.githubstatus.com'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0bf83a850b45e4ccda15bd04691e3c47ae84fec3588363b53618bd275a98cbb7.eot?host=www.githubstatus.com#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0c394ec7a111aa7928ea470ec0a67c44ebdaa0f93d1c3341abb69656cc26cbdd.woff?host=www.githubstatus.com') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-9e43859f8015a4d47d9eaf7bafe8d1e26e3298795ce1f4cdb0be0479b8a4605e.ttf?host=www.githubstatus.com') format('truetype'); font-weight:400; font-style:italic; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-09566917307251d22021a3f91fc646f3e45f8d095209bcd2cded8a1979f06e54.eot?host=www.githubstatus.com'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-09566917307251d22021a3f91fc646f3e45f8d095209bcd2cded8a1979f06e54.eot?host=www.githubstatus.com#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-86724fb2152613d735ba47c3f47a9ad2424b898bea4bece213dacee40344f966.woff?host=www.githubstatus.com') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-cf3e4eb7fbdf6fb83e526cc2a0141e55b01097e6e1abfd4cbdc3eda75d183f74.ttf?host=www.githubstatus.com') format('truetype'); font-weight:500; font-style:normal; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-622ea489d20e12e691663f83217105e957e2d3d09703707d40155a29c06cc9d9.eot?host=www.githubstatus.com'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-622ea489d20e12e691663f83217105e957e2d3d09703707d40155a29c06cc9d9.eot?host=www.githubstatus.com#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-c8dc577ff7f76d2fc199843e38c04bb2e9fd15889421358d966a9f846c2ed1cd.woff?host=www.githubstatus.com') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-27177fe9242acbe089276ee587feef781446667ffe9b6fdc5b7fe21ad73e12f3.ttf?host=www.githubstatus.com') format('truetype'); font-weight:700; font-style:normal; } </style> <link rel="shortcut icon" type="image/x-icon" href="//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/36420/akacZEQQfOBdc7ftyxJt" /> <link rel="shortcut icon" href='//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/36420/akacZEQQfOBdc7ftyxJt'> <link rel="alternate" type="application/atom+xml" href="https://www.githubstatus.com/history.atom" title="GitHub Status History - Atom Feed"> <link rel="alternate" type="application/rss+xml" href="https://www.githubstatus.com/history.rss" title="GitHub Status History - RSS Feed"> <!-- Canonical Link to ensure that only the custom domain is indexed when present --> <link rel="canonical" href="https://www.githubstatus.com/history"> <meta name="_globalsign-domain-verification" content="y_VzfckMy4iePo5oDJNivyYIjh8LffYa4jzUndm_bZ"/> <link rel="alternate" type="application/atom+xml" title="ATOM" href="https://www.githubstatus.com/history.atom" /> <!-- Le styles --> <link rel="stylesheet" media="screen" href="https://dka575ofm4ao0.cloudfront.net/packs/0.fd3c3079f5a65dcc2e43.css" /><link rel="stylesheet" media="screen" href="https://dka575ofm4ao0.cloudfront.net/packs/191.fd3c3079f5a65dcc2e43.css" /><link rel="stylesheet" media="screen" href="https://dka575ofm4ao0.cloudfront.net/packs/155.fd3c3079f5a65dcc2e43.css" /> <link rel="stylesheet" media="all" href="https://dka575ofm4ao0.cloudfront.net/assets/status/status_manifest-e5fd07250d5426b6c15214a184a78f72bd224c0f158f2ca1f35a3cf1ee9c1783.css" /> <script src="https://dka575ofm4ao0.cloudfront.net/assets/jquery-3.5.1.min-729e416557a365062a8a20f0562f18aa171da57298005d392312670c706c68de.js"></script> <script> window.pageColorData = {"blue":"#0366d6","border":"#e1e4e8","body_background":"#ffffff","font":"#24292e","graph":"#0366d6","green":"#28a745","light_font":"#6a737d","link":"#0366d6","orange":"#e36209","red":"#dc3545","yellow":"#dbab09","no_data":"#b3bac5"}; </script> <style> /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ body, .layout-content.status.status-api .section .example-container .example-opener .color-secondary, .grouped-items-selector, .layout-content.status.status-full-history .history-nav a.current, div[id^="subscribe-modal"] .modal-footer, div[id^="subscribe-modal"], div[id^="updates-dropdown"] .updates-dropdown-section, #uptime-tooltip .tooltip-box { background-color:#ffffff; } #uptime-tooltip .pointer-container .pointer-smaller { border-bottom-color:#ffffff; } /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ body.status, .color-primary, .color-primary:hover, .layout-content.status-index .status-day .update-title.impact-none a, .layout-content.status-index .status-day .update-title.impact-none a:hover, .layout-content.status-index .timeframes-container .timeframe.active, .layout-content.status-full-history .month .incident-container .impact-none, .layout-content.status.status-index .incidents-list .incident-title.impact-none a, .incident-history .impact-none, .layout-content.status .grouped-items-selector.inline .grouped-item.active, .layout-content.status.status-full-history .history-nav a.current, .layout-content.status.status-full-history .history-nav a:not(.current):hover, div[id^="subscribe-modal"] .modal-header .close, .grouped-item-label, #uptime-tooltip .tooltip-box .tooltip-content .related-events .related-event a.related-event-link { color:#24292e; } .layout-content.status.status-index .components-statuses .component-container .name { color:#24292e; color:rgba(36,41,46,.8); } /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ small, .layout-content.status .table-row .date, .color-secondary, .layout-content.status .grouped-items-selector.inline .grouped-item, .layout-content.status.status-full-history .history-footer .pagination a.disabled, .layout-content.status.status-full-history .history-nav a, #uptime-tooltip .tooltip-box .tooltip-content .related-events #related-event-header { color:#6a737d; } /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ body.status .layout-content.status .border-color, hr, .tooltip-base, .markdown-display table, div[id^="subscribe-modal"], #uptime-tooltip .tooltip-box { border-color:#e1e4e8; } div[id^="subscribe-modal"] .modal-footer, .markdown-display table td { border-top-color:#e1e4e8; } .markdown-display table td + td, .markdown-display table th + th { border-left-color:#e1e4e8; } div[id^="subscribe-modal"] .modal-header, #uptime-tooltip .pointer-container .pointer-larger { border-bottom-color:#e1e4e8; } #uptime-tooltip .tooltip-box .outage-field { /* Generate the background-color for the outage-field from the css_body_background_color and css_border_color. For the default background (#ffffff) and default css_border_color (#e0e0e0), use the luminosity of the default background with a magic number to arrive at the original outage-field background color (#f4f5f7). I used the formula Target Color = Color * alpha + Background * (1 - alpha) to find the magic number of ~0.08. For darker css_body_background_color, luminosity values are lower so alpha trends toward becoming transparent (thus outage-field background becomes same as css_body_background_color). */ background-color: rgba(225,228,232,0.31); /* outage-field border-color alpha is inverse to the luminosity of css_body_background_color. That is to say, with a default white background this border is transparent, but on a black background, it's opaque css_border_color. */ border-color: rgba(225,228,232,0.0); } /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ .layout-content.status.status-index .status-day .update-title.impact-critical a, .layout-content.status.status-index .status-day .update-title.impact-critical a:hover, .layout-content.status.status-index .page-status.status-critical, .layout-content.status.status-index .unresolved-incident.impact-critical .incident-title, .flat-button.background-red { background-color:#dc3545; } .layout-content.status-index .components-statuses .component-container.status-red:after, .layout-content.status-full-history .month .incident-container .impact-critical, .layout-content.status-incident .incident-name.impact-critical, .layout-content.status.status-index .incidents-list .incident-title.impact-critical a, .status-red .icon-indicator, .incident-history .impact-critical, .components-container .component-inner-container.status-red .component-status, .components-container .component-inner-container.status-red .icon-indicator { color:#dc3545; } .layout-content.status.status-index .unresolved-incident.impact-critical .updates { border-color:#dc3545; } /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ .layout-content.status.status-index .status-day .update-title.impact-major a, .layout-content.status.status-index .status-day .update-title.impact-major a:hover, .layout-content.status.status-index .page-status.status-major, .layout-content.status.status-index .unresolved-incident.impact-major .incident-title { background-color:#e36209; } .layout-content.status-index .components-statuses .component-container.status-orange:after, .layout-content.status-full-history .month .incident-container .impact-major, .layout-content.status-incident .incident-name.impact-major, .layout-content.status.status-index .incidents-list .incident-title.impact-major a, .status-orange .icon-indicator, .incident-history .impact-major, .components-container .component-inner-container.status-orange .component-status, .components-container .component-inner-container.status-orange .icon-indicator { color:#e36209; } .layout-content.status.status-index .unresolved-incident.impact-major .updates { border-color:#e36209; } /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ .layout-content.status.status-index .status-day .update-title.impact-minor a, .layout-content.status.status-index .status-day .update-title.impact-minor a:hover, .layout-content.status.status-index .page-status.status-minor, .layout-content.status.status-index .unresolved-incident.impact-minor .incident-title, .layout-content.status.status-index .scheduled-incidents-container .tab { background-color:#dbab09; } .layout-content.status-index .components-statuses .component-container.status-yellow:after, .layout-content.status-full-history .month .incident-container .impact-minor, .layout-content.status-incident .incident-name.impact-minor, .layout-content.status.status-index .incidents-list .incident-title.impact-minor a, .status-yellow .icon-indicator, .incident-history .impact-minor, .components-container .component-inner-container.status-yellow .component-status, .components-container .component-inner-container.status-yellow .icon-indicator, .layout-content.status.manage-subscriptions .confirmation-infobox .fa { color:#dbab09; } .layout-content.status.status-index .unresolved-incident.impact-minor .updates, .layout-content.status.status-index .scheduled-incidents-container { border-color:#dbab09; } /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ .layout-content.status.status-index .status-day .update-title.impact-maintenance a, .layout-content.status.status-index .status-day .update-title.impact-maintenance a:hover, .layout-content.status.status-index .page-status.status-maintenance, .layout-content.status.status-index .unresolved-incident.impact-maintenance .incident-title, .layout-content.status.status-index .scheduled-incidents-container .tab { background-color:#0366d6; } .layout-content.status-index .components-statuses .component-container.status-blue:after, .layout-content.status-full-history .month .incident-container .impact-maintenance, .layout-content.status-incident .incident-name.impact-maintenance, .layout-content.status.status-index .incidents-list .incident-title.impact-maintenance a, .status-blue .icon-indicator, .incident-history .impact-maintenance, .components-container .component-inner-container.status-blue .component-status, .components-container .component-inner-container.status-blue .icon-indicator { color:#0366d6; } .layout-content.status.status-index .unresolved-incident.impact-maintenance .updates, .layout-content.status.status-index .scheduled-incidents-container { border-color:#0366d6; } /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ .layout-content.status.status-index .page-status.status-none { background-color:#28a745; } .layout-content.status-index .components-statuses .component-container.status-green:after, .status-green .icon-indicator, .components-container .component-inner-container.status-green .component-status, .components-container .component-inner-container.status-green .icon-indicator { color:#28a745; } /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ a, a:hover, .layout-content.status-index .page-footer span a:hover, .layout-content.status-index .timeframes-container .timeframe:not(.active):hover, .layout-content.status-incident .subheader a:hover { color:#0366d6; } .flat-button, .masthead .updates-dropdown-container .show-updates-dropdown, .layout-content.status-full-history .show-filter.open { background-color:#0366d6; } /* CUSTOM COLOR OVERRIDES FOR UPTIME SHOWCASE */ .components-section .components-uptime-link { color: #6a737d; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item { color: #6a737d; opacity: 1; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item.light { color: #6a737d; opacity: 1; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .spacer { background: #6a737d; opacity: 1; } </style> <!-- custom css --> <link rel="stylesheet" type="text/css" href="//dka575ofm4ao0.cloudfront.net/page_display_customizations-custom_css_externals/36313/external20250220-34-h6ft12.css"> <!-- polyfills --> <script crossorigin="anonymous" src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.js"></script> <!-- Le HTML5 shim --> <!--[if lt IE 9]> <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!-- injection for static --> </head> <body class="status history status-none"> <div class="layout-content status status-full-history starter"> <div class="custom-header-container"> <script> var meta = document.createElement('meta'); meta.setAttribute('name', 'ha-url'); meta.setAttribute('content', 'https://collector.githubapp.com/statuspage-views/collect'); document.head.appendChild(meta); </script> <script async onload="initAnalytics()" src="https://analytics.githubassets.com/hydro-client.min.js"></script> <script> function initAnalytics() { if (!window._ha) { return } // Send general pageview window._ha.sendPageView() // If on homepage, send index page view if (window.location.pathname === '/' && document.referrer !== (document.location.origin + document.location.pathname)) { // Create new instance for home page views exclusively let indexHa = Object.create(window._ha); indexHa.options = { ...window._ha.options } indexHa.options.collectorUrl = 'https://collector.githubapp.com/statuspage/collect'; indexHa.sendPageView(); } } </script> <script> document.addEventListener("DOMContentLoaded", function () { // Select the Twitter button var twitterBtn = document.getElementById("updates-dropdown-twitter-btn"); if (twitterBtn) { // Remove any existing content inside the Twitter icon container twitterBtn.innerHTML = ` <span class="icon-container x" style="height: 100%; display: flex; align-items: center; justify-content: center;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="d-block" height="20" width="20" role="img"> <title>Subscribe via X</title> <path fill="currentColor" d="M14.28 10.38L23.2 0h-2.1L13.8 9.02L7.14 0H0l10.13 14.7L0 25.5h2.1l7.64-9.38l6.9 9.38H23.2L12.72 10.38zM3.06 1.62h2.76L20.94 23.9h-2.76L3.06 1.62z"/> </svg> </span> `; } }); </script> <div class="header d-md-flex flex-md-justify-between flex-md-items-center px-4 py-3 text-center text-md-left bg-white box-shadow-large"> <a href="/" class="text-gray-dark" aria-label="GitHub Octicon logo"><svg height="32" class="octicon octicon-mark-github d-block mx-auto" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true" role="img"><title>GitHub Octicon logo</title><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a> <nav class="f4 list-style-none py-2 mt-2 mt-md-0"> <a class="mr-3 mr-lg-4 py-2" href="https://help.github.com">Help</a> <a class="mr-3 mr-lg-4 py-2" href="https://github.community">Community</a> <a class="mr-3 py-2 text-gray " href="/">Status</a> </nav> <nav class="f4 list-style-none py-2 text-md-right"> <a class="py-2" href="https://github.com">GitHub.com</a> <div class="d-inline py-2 ml-3 ml-lg-4"> <div id="replace-with-subscribe"></div> </div> </nav> </div> <img src="https://user-images.githubusercontent.com/19292210/60553863-044dd200-9cea-11e9-987e-7db84449f215.png" class="illo-desktop-header" style="display: none;" alt="GitHub header"> <img src="https://user-images.githubusercontent.com/19292210/60553865-044dd200-9cea-11e9-859c-d6f266e2f01f.png" class="illo-mobile-header" alt="GitHub header"> <div class="updates-dropdown-container" data-js-hook="updates-dropdown-container"> <a href="#" data-js-hook="show-updates-dropdown" id="show-updates-dropdown" class="show-updates-dropdown" aria-label="Subscribe to updates" aria-expanded="false" aria-haspopup="dialog" role="button"> </a> <!-- Accessibility guidelines for tabs: https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html --> <div class="updates-dropdown" data-js-hook="updates-dropdown" id="updates-dropdown" style="display:none"> <div class="updates-dropdown-nav nav-items-8" role="tablist" aria-label="Subscribe to updates"> <a href="#updates-dropdown-email" aria-controls="updates-dropdown-email" aria-label="Subscribe via email" role="tab" aria-selected="true" id="updates-dropdown-email-btn"> <span class="icon-container email"> </a> <a href="#updates-dropdown-sms" aria-controls="updates-dropdown-sms" aria-label="Subscribe via SMS" role="tab" id="updates-dropdown-sms-btn"> <span class="icon-container sms"> </a> <a href="#updates-dropdown-slack" aria-controls="updates-dropdown-slack" aria-label="Subscribe via slack" role="tab" id="updates-dropdown-slack-btn"> <span class="icon-container slack"> </a> <a href="#updates-dropdown-webhook" aria-controls="updates-dropdown-webhook" aria-label="Subscribe via webhook" role="tab" id="updates-dropdown-webhook-btn"> <span class="icon-container webhook"> </a> <a href="#updates-dropdown-twitter" aria-controls="updates-dropdown-twitter" aria-label="Subscribe via twitter" role="tab" id="updates-dropdown-twitter-btn"> <span class="icon-container twitter"> </a> <a href="#updates-dropdown-support" aria-controls="updates-dropdown-support" aria-label="Contact support" role="tab" id="updates-dropdown-support-btn"> <span class="icon-container support"> </a> <a href="#updates-dropdown-atom" aria-controls="updates-dropdown-atom" aria-label="Subscribe via RSS" role="tab" id="updates-dropdown-atom-btn"> <span class="icon-container rss"> </a> <button data-js-hook="updates-dropdown-close" aria-label="Close subscribe form" id="updates-dropdown-close-btn"> x </button> </div> <div class="updates-dropdown-sections-container"> <div class="updates-dropdown-section email" id="updates-dropdown-email" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-email-btn"> <div class="directions"> Get email notifications whenever GitHub <strong>creates</strong>, <strong>updates</strong> or <strong>resolves</strong> an incident. </div> <form id="subscribe-form-email" action="/subscriptions/new-email" accept-charset="UTF-8" data-remote="true" method="post"> <input type="hidden" name="email_otp_verify_flow" id="email_otp_verify_flow" value="false" autocomplete="off" /> <!-- make sure not to put cookie values in here since this gets cached --> <label for="email">Email address:</label> <input name="email" id="email" type="text" class="full-width" data-js-hook="email-notification-field" autocomplete="email"> <input name="email_otp_auth_token" type='hidden' id="email-otp-token-field"> <div class="opt-container-section" id="email-otp-container", style="display:none" > <label for="email-otp">Enter OTP:</label> <input name="otp" id="email-otp" type="text" value="" class="prepend full-width"> <p id="email-otp-timer">Resend OTP in: <span id="email-otp-countdown"></span> seconds </p> <p id="resend-email-otp"> Didn't receive the OTP? <a href="#" id="resend-email-otp-btn" >Resend OTP </a> </p> </div> <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> <input type="submit" value="Subscribe via Email" class="flat-button full-width g-recaptcha" id="subscribe-btn-email" data-disabled-text="Subscribing..." data-sitekey=6LdTS8AUAAAAAOIbCKoCAP4LQku1olYGrywPTaZz data-callback="submitNewEmailSubscriber" data-error-callback="emailSubscriberCaptchaError" > <div class="terms_and_privacy_information bottom small"><div class="privacy_policy_information small">By subscribing you agree to our <a target="_blank" rel="noopener" class="accessible-link" href="https://help.github.com/articles/github-privacy-statement/">Privacy Policy</a>.</div> This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" class="accessible-link" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" class="accessible-link" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> </form> </div> <div class="updates-dropdown-section phone" id="updates-dropdown-sms" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-sms-btn"> <div class="directions"> Get text message notifications whenever GitHub <strong>creates</strong> or <strong>resolves</strong> an incident. </div> <form id="subscribe-form-sms" action="/subscriptions/new-sms" accept-charset="UTF-8" data-remote="true" method="post"> <input type="hidden" name="otp_verify_flow" id="otp_verify_flow" value="false" autocomplete="off" /> <input type="hidden" name="subscriber_code" id="subscriber_code" value="" autocomplete="off" /> <div class="control-group"> <div class="controls externalities-sms-container"> <!-- make sure not to put cookie values in here since this gets cached --> <label for="phone-country">Country code:</label> <div id="phone-number-country-code" class="phone-country-wrapper" data-otp-enabled="false"> <select name="phone_country" id="phone-country" data-js-hook="phone-country" class="phone-country"><option value="af" data-otp-enabled="false" >Afghanistan (+93)</option> <option value="al" data-otp-enabled="false" >Albania (+355)</option> <option value="dz" data-otp-enabled="false" >Algeria (+213)</option> <option value="as" data-otp-enabled="false" >American Samoa (+1)</option> <option value="ad" data-otp-enabled="false" >Andorra (+376)</option> <option value="ao" data-otp-enabled="false" >Angola (+244)</option> <option value="ai" data-otp-enabled="false" >Anguilla (+1)</option> <option value="ag" data-otp-enabled="false" >Antigua and Barbuda (+1)</option> <option value="ar" data-otp-enabled="false" >Argentina (+54)</option> <option value="am" data-otp-enabled="false" >Armenia (+374)</option> <option value="aw" data-otp-enabled="false" >Aruba (+297)</option> <option value="au" data-otp-enabled="false" >Australia/Cocos/Christmas Island (+61)</option> <option value="at" data-otp-enabled="false" >Austria (+43)</option> <option value="az" data-otp-enabled="false" >Azerbaijan (+994)</option> <option value="bs" data-otp-enabled="false" >Bahamas (+1)</option> <option value="bh" data-otp-enabled="false" >Bahrain (+973)</option> <option value="bd" data-otp-enabled="false" >Bangladesh (+880)</option> <option value="bb" data-otp-enabled="false" >Barbados (+1)</option> <option value="by" data-otp-enabled="false" >Belarus (+375)</option> <option value="be" data-otp-enabled="false" >Belgium (+32)</option> <option value="bz" data-otp-enabled="false" >Belize (+501)</option> <option value="bj" data-otp-enabled="false" >Benin (+229)</option> <option value="bm" data-otp-enabled="false" >Bermuda (+1)</option> <option value="bo" data-otp-enabled="false" >Bolivia (+591)</option> <option value="ba" data-otp-enabled="false" >Bosnia and Herzegovina (+387)</option> <option value="bw" data-otp-enabled="false" >Botswana (+267)</option> <option value="br" data-otp-enabled="false" >Brazil (+55)</option> <option value="bn" data-otp-enabled="false" >Brunei (+673)</option> <option value="bg" data-otp-enabled="false" >Bulgaria (+359)</option> <option value="bf" data-otp-enabled="false" >Burkina Faso (+226)</option> <option value="bi" data-otp-enabled="false" >Burundi (+257)</option> <option value="kh" data-otp-enabled="false" >Cambodia (+855)</option> <option value="cm" data-otp-enabled="false" >Cameroon (+237)</option> <option value="ca" data-otp-enabled="false" >Canada (+1)</option> <option value="cv" data-otp-enabled="false" >Cape Verde (+238)</option> <option value="ky" data-otp-enabled="false" >Cayman Islands (+1)</option> <option value="cf" data-otp-enabled="false" >Central Africa (+236)</option> <option value="td" data-otp-enabled="false" >Chad (+235)</option> <option value="cl" data-otp-enabled="false" >Chile (+56)</option> <option value="cn" data-otp-enabled="false" >China (+86)</option> <option value="co" data-otp-enabled="false" >Colombia (+57)</option> <option value="km" data-otp-enabled="false" >Comoros (+269)</option> <option value="cg" data-otp-enabled="false" >Congo (+242)</option> <option value="cd" data-otp-enabled="false" >Congo, Dem Rep (+243)</option> <option value="cr" data-otp-enabled="false" >Costa Rica (+506)</option> <option value="hr" data-otp-enabled="false" >Croatia (+385)</option> <option value="cy" data-otp-enabled="false" >Cyprus (+357)</option> <option value="cz" data-otp-enabled="false" >Czech Republic (+420)</option> <option value="dk" data-otp-enabled="false" >Denmark (+45)</option> <option value="dj" data-otp-enabled="false" >Djibouti (+253)</option> <option value="dm" data-otp-enabled="false" >Dominica (+1)</option> <option value="do" data-otp-enabled="false" >Dominican Republic (+1)</option> <option value="eg" data-otp-enabled="false" >Egypt (+20)</option> <option value="sv" data-otp-enabled="false" >El Salvador (+503)</option> <option value="gq" data-otp-enabled="false" >Equatorial Guinea (+240)</option> <option value="ee" data-otp-enabled="false" >Estonia (+372)</option> <option value="et" data-otp-enabled="false" >Ethiopia (+251)</option> <option value="fo" data-otp-enabled="false" >Faroe Islands (+298)</option> <option value="fj" data-otp-enabled="false" >Fiji (+679)</option> <option value="fi" data-otp-enabled="false" >Finland/Aland Islands (+358)</option> <option value="fr" data-otp-enabled="false" >France (+33)</option> <option value="gf" data-otp-enabled="false" >French Guiana (+594)</option> <option value="pf" data-otp-enabled="false" >French Polynesia (+689)</option> <option value="ga" data-otp-enabled="false" >Gabon (+241)</option> <option value="gm" data-otp-enabled="false" >Gambia (+220)</option> <option value="ge" data-otp-enabled="false" >Georgia (+995)</option> <option value="de" data-otp-enabled="false" >Germany (+49)</option> <option value="gh" data-otp-enabled="false" >Ghana (+233)</option> <option value="gi" data-otp-enabled="false" >Gibraltar (+350)</option> <option value="gr" data-otp-enabled="false" >Greece (+30)</option> <option value="gl" data-otp-enabled="false" >Greenland (+299)</option> <option value="gd" data-otp-enabled="false" >Grenada (+1)</option> <option value="gp" data-otp-enabled="false" >Guadeloupe (+590)</option> <option value="gu" data-otp-enabled="false" >Guam (+1)</option> <option value="gt" data-otp-enabled="false" >Guatemala (+502)</option> <option value="gn" data-otp-enabled="false" >Guinea (+224)</option> <option value="gy" data-otp-enabled="false" >Guyana (+592)</option> <option value="ht" data-otp-enabled="false" >Haiti (+509)</option> <option value="hn" data-otp-enabled="false" >Honduras (+504)</option> <option value="hk" data-otp-enabled="false" >Hong Kong (+852)</option> <option value="hu" data-otp-enabled="false" >Hungary (+36)</option> <option value="is" data-otp-enabled="false" >Iceland (+354)</option> <option value="in" data-otp-enabled="false" >India (+91)</option> <option value="id" data-otp-enabled="false" >Indonesia (+62)</option> <option value="iq" data-otp-enabled="false" >Iraq (+964)</option> <option value="ie" data-otp-enabled="false" >Ireland (+353)</option> <option value="il" data-otp-enabled="false" >Israel (+972)</option> <option value="it" data-otp-enabled="false" >Italy (+39)</option> <option value="jm" data-otp-enabled="false" >Jamaica (+1)</option> <option value="jp" data-otp-enabled="false" >Japan (+81)</option> <option value="jo" data-otp-enabled="false" >Jordan (+962)</option> <option value="ke" data-otp-enabled="false" >Kenya (+254)</option> <option value="kr" data-otp-enabled="false" >Korea, Republic of (+82)</option> <option value="xk" data-otp-enabled="false" >Kosovo (+383)</option> <option value="kw" data-otp-enabled="false" >Kuwait (+965)</option> <option value="kg" data-otp-enabled="false" >Kyrgyzstan (+996)</option> <option value="la" data-otp-enabled="false" >Laos (+856)</option> <option value="lv" data-otp-enabled="false" >Latvia (+371)</option> <option value="lb" data-otp-enabled="false" >Lebanon (+961)</option> <option value="ls" data-otp-enabled="false" >Lesotho (+266)</option> <option value="lr" data-otp-enabled="false" >Liberia (+231)</option> <option value="ly" data-otp-enabled="false" >Libya (+218)</option> <option value="li" data-otp-enabled="false" >Liechtenstein (+423)</option> <option value="lt" data-otp-enabled="false" >Lithuania (+370)</option> <option value="lu" data-otp-enabled="false" >Luxembourg (+352)</option> <option value="mo" data-otp-enabled="false" >Macao (+853)</option> <option value="mk" data-otp-enabled="false" >Macedonia (+389)</option> <option value="mg" data-otp-enabled="false" >Madagascar (+261)</option> <option value="mw" data-otp-enabled="false" >Malawi (+265)</option> <option value="my" data-otp-enabled="false" >Malaysia (+60)</option> <option value="mv" data-otp-enabled="false" >Maldives (+960)</option> <option value="ml" data-otp-enabled="false" >Mali (+223)</option> <option value="mt" data-otp-enabled="false" >Malta (+356)</option> <option value="mq" data-otp-enabled="false" >Martinique (+596)</option> <option value="mr" data-otp-enabled="false" >Mauritania (+222)</option> <option value="mu" data-otp-enabled="false" >Mauritius (+230)</option> <option value="mx" data-otp-enabled="false" >Mexico (+52)</option> <option value="mc" data-otp-enabled="false" >Monaco (+377)</option> <option value="mn" data-otp-enabled="false" >Mongolia (+976)</option> <option value="me" data-otp-enabled="false" >Montenegro (+382)</option> <option value="ms" data-otp-enabled="false" >Montserrat (+1)</option> <option value="ma" data-otp-enabled="false" >Morocco/Western Sahara (+212)</option> <option value="mz" data-otp-enabled="false" >Mozambique (+258)</option> <option value="na" data-otp-enabled="false" >Namibia (+264)</option> <option value="np" data-otp-enabled="false" >Nepal (+977)</option> <option value="nl" data-otp-enabled="false" >Netherlands (+31)</option> <option value="nz" data-otp-enabled="false" >New Zealand (+64)</option> <option value="ni" data-otp-enabled="false" >Nicaragua (+505)</option> <option value="ne" data-otp-enabled="false" >Niger (+227)</option> <option value="ng" data-otp-enabled="false" >Nigeria (+234)</option> <option value="no" data-otp-enabled="false" >Norway (+47)</option> <option value="om" data-otp-enabled="false" >Oman (+968)</option> <option value="pk" data-otp-enabled="false" >Pakistan (+92)</option> <option value="ps" data-otp-enabled="false" >Palestinian Territory (+970)</option> <option value="pa" data-otp-enabled="false" >Panama (+507)</option> <option value="py" data-otp-enabled="false" >Paraguay (+595)</option> <option value="pe" data-otp-enabled="false" >Peru (+51)</option> <option value="ph" data-otp-enabled="false" >Philippines (+63)</option> <option value="pl" data-otp-enabled="false" >Poland (+48)</option> <option value="pt" data-otp-enabled="false" >Portugal (+351)</option> <option value="pr" data-otp-enabled="false" >Puerto Rico (+1)</option> <option value="qa" data-otp-enabled="false" >Qatar (+974)</option> <option value="re" data-otp-enabled="false" >Reunion/Mayotte (+262)</option> <option value="ro" data-otp-enabled="false" >Romania (+40)</option> <option value="ru" data-otp-enabled="false" >Russia/Kazakhstan (+7)</option> <option value="rw" data-otp-enabled="false" >Rwanda (+250)</option> <option value="ws" data-otp-enabled="false" >Samoa (+685)</option> <option value="sm" data-otp-enabled="false" >San Marino (+378)</option> <option value="sa" data-otp-enabled="false" >Saudi Arabia (+966)</option> <option value="sn" data-otp-enabled="false" >Senegal (+221)</option> <option value="rs" data-otp-enabled="false" >Serbia (+381)</option> <option value="sc" data-otp-enabled="false" >Seychelles (+248)</option> <option value="sl" data-otp-enabled="false" >Sierra Leone (+232)</option> <option value="sg" data-otp-enabled="false" >Singapore (+65)</option> <option value="sk" data-otp-enabled="false" >Slovakia (+421)</option> <option value="si" data-otp-enabled="false" >Slovenia (+386)</option> <option value="za" data-otp-enabled="false" >South Africa (+27)</option> <option value="es" data-otp-enabled="false" >Spain (+34)</option> <option value="lk" data-otp-enabled="false" >Sri Lanka (+94)</option> <option value="kn" data-otp-enabled="false" >St Kitts and Nevis (+1)</option> <option value="lc" data-otp-enabled="false" >St Lucia (+1)</option> <option value="vc" data-otp-enabled="false" >St Vincent Grenadines (+1)</option> <option value="sd" data-otp-enabled="false" >Sudan (+249)</option> <option value="sr" data-otp-enabled="false" >Suriname (+597)</option> <option value="sz" data-otp-enabled="false" >Swaziland (+268)</option> <option value="se" data-otp-enabled="false" >Sweden (+46)</option> <option value="ch" data-otp-enabled="false" >Switzerland (+41)</option> <option value="tw" data-otp-enabled="false" >Taiwan (+886)</option> <option value="tj" data-otp-enabled="false" >Tajikistan (+992)</option> <option value="tz" data-otp-enabled="false" >Tanzania (+255)</option> <option value="th" data-otp-enabled="false" >Thailand (+66)</option> <option value="tg" data-otp-enabled="false" >Togo (+228)</option> <option value="to" data-otp-enabled="false" >Tonga (+676)</option> <option value="tt" data-otp-enabled="false" >Trinidad and Tobago (+1)</option> <option value="tn" data-otp-enabled="false" >Tunisia (+216)</option> <option value="tr" data-otp-enabled="false" >Turkey (+90)</option> <option value="tc" data-otp-enabled="false" >Turks and Caicos Islands (+1)</option> <option value="ug" data-otp-enabled="false" >Uganda (+256)</option> <option value="ua" data-otp-enabled="false" >Ukraine (+380)</option> <option value="ae" data-otp-enabled="false" >United Arab Emirates (+971)</option> <option value="gb" data-otp-enabled="false" >United Kingdom (+44)</option> <option value="us" data-otp-enabled="false" selected>United States (+1)</option> <option value="uy" data-otp-enabled="false" >Uruguay (+598)</option> <option value="uz" data-otp-enabled="false" >Uzbekistan (+998)</option> <option value="ve" data-otp-enabled="false" >Venezuela (+58)</option> <option value="vn" data-otp-enabled="false" >Vietnam (+84)</option> <option value="vg" data-otp-enabled="false" >Virgin Islands, British (+1)</option> <option value="vi" data-otp-enabled="false" >Virgin Islands, U.S. (+1)</option> <option value="ye" data-otp-enabled="false" >Yemen (+967)</option> <option value="zm" data-otp-enabled="false" >Zambia (+260)</option> <option value="zw" data-otp-enabled="false" >Zimbabwe (+263)</option></select> </div> <label for="phone-number">Phone number:</label> <input name="phone_number" id="phone-number" type="text" class="prepend full-width" data-js-hook="sms-notification-field"> <div class="sms-atl-error" id="sms-atl-error"></div> <div class="clearfix"></div> <div class="opt-container-section" id="otp-container" style="display:none"> <a href="#" id="btn-subcriber-change-number">Change number</a> <label for="otp">Enter OTP:</label> <input name="otp" id="otp" type="text" class="prepend full-width"> <p id="timer">Resend OTP in: <span id="countdown">30</span> seconds </p> <p id="resend"> Didn't receive the OTP? <a href="#" id="resend-otp-btn" >Resend OTP </a> </p> </div> </div> </div> <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> <input type="submit" value="Subscribe via Text Message" class="flat-button full-width g-recaptcha" id="subscribe-btn-sms" data-disabled-text="Subscribing..." data-sitekey=6LcH-b0UAAAAACVQtMb14LBhflMA9y0Nmu7l_W6d data-callback="submitNewSmsSubscriber" data-error-callback="smsSubscriberCaptchaError"> <div class="terms_and_privacy_information bottom small">Message and data rates may apply. By subscribing you agree to our <a target="_blank" rel="noopener" class="accessible-link" href="https://help.github.com/articles/github-privacy-statement/">Privacy Policy</a>, the Atlassian <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/product-specific-terms#statuspage-specific-terms">Terms of Service</a>, and the Atlassian <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/privacy-policy">Privacy Policy</a>. This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" class="accessible-link" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" class="accessible-link" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> </form> </div> <div class="updates-dropdown-section slack" id="updates-dropdown-slack" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-slack-btn"> <div class="directions"> Get incident updates and maintenance status messages in Slack. </div> <a value="Subscribe via Slack" class="flat-button full-width" id="subscribe-btn-slack" data-disabled-text="Subscribing..." data-revert-on-success="true" style="margin-top:.75rem" href="https://subscriptions.statuspage.io/slack_authentication/kickoff?page_code=kctbh9vrtdwd">Subscribe via Slack</a> <div class="terms_and_privacy_information bottom small">By subscribing you acknowledge our <a target="_blank" rel="noopener" class="accessible-link" href="https://help.github.com/articles/github-privacy-statement/">Privacy Policy</a>. In addition, you agree to the Atlassian <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/cloud-terms-of-service">Cloud Terms of Service</a> and acknowledge Atlassian's <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/privacy-policy">Privacy Policy</a>.</div> </div> <div class="updates-dropdown-section webhook" id="updates-dropdown-webhook" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-webhook-btn"> <div class="directions"> Get webhook notifications whenever GitHub <strong>creates</strong> an incident, <strong>updates</strong> an incident, <strong>resolves</strong> an incident or <strong>changes</strong> a component status. </div> <form id="subscribe-form-webhook" action="/subscriptions/webhook.json" accept-charset="UTF-8" data-remote="true" method="post"> <div class="control-group"> <div class="controls"> <label for="endpoint-webhooks">Webhook URL:</label> <input type="text" name="endpoint" id="endpoint-webhooks" data-js-hook="endpoint" class="full-width" aria-describedby="url-help-block" /> <p class="help-block" id="url-help-block">The URL we should send the webhooks to</p> </div> </div> <div class="control-group"> <div class="controls"> <label for="email-webhooks">Email address:</label> <input type="text" name="email" id="email-webhooks" data-js-hook="email" class="full-width" aria-describedby="email-help-block" /> <p class="help-block" id="email-help-block">We'll send you email if your endpoint fails</p> </div> </div> <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> <input type="submit" value=Subscribe To Notifications class="flat-button full-width g-recaptcha" id="subscribe-btn-webhook" data-disabled-text="Subscribing..." data-sitekey=6LcQ-b0UAAAAAJjfdwO_-ozGC-CzWDj4Pm1kJ2Ah data-callback="submitNewWebhookSubscriber" data-error-callback="webhookSubscriberCaptchaError"> <div class="terms_and_privacy_information bottom small"><div class="privacy_policy_information small">By subscribing you agree to our <a target="_blank" rel="noopener" class="accessible-link" href="https://help.github.com/articles/github-privacy-statement/">Privacy Policy</a>.</div> This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" class="accessible-link" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" class="accessible-link" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> </form> </div> <div class="updates-dropdown-section twitter" id="updates-dropdown-twitter" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-twitter-btn"> <a href="https://twitter.com/githubstatus" class="twitter-follow-button" data-show-count="false" data-show-screen-name="true" data-width="59px">Follow @githubstatus</a> or <a href="https://twitter.com/githubstatus" target="_blank">view our profile</a>. <style> .twitter-follow-button { margin-bottom: -6px; } </style> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> </div> <div class="updates-dropdown-section support" id="updates-dropdown-support" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-support-btn"> Visit our <a target="_blank" href="https://github.com/support">support site</a>. </div> <div class="updates-dropdown-section atom" id="updates-dropdown-atom" role="tabpanel" aria-labelledby="updates-dropdown-atom-btn"> Get the <a href="https://www.githubstatus.com/history.atom" target="_blank">Atom Feed</a> or <a href="https://www.githubstatus.com/history.rss" target="_blank">RSS Feed</a>. </div> </div> </div> </div> <script> $(function () { const phoneNumberInput = $('#phone-number'); const errorDiv = $('#sms-atl-error') if(errorDiv.length){ function checkSelectedCountry() { const selectedCountry = $('#phone-country').val(); const isOtpEnabled = $('#phone-number-country-code').attr('data-otp-enabled') === 'true'; const form = document.getElementById('subscribe-form-sms'); form.action = '/subscriptions/new-sms'; const isOtpFlow = document.getElementById('otp_verify_flow'); document.getElementById('otp-container').style.display = "none"; if(false && selectedCountry === 'sg') { // Replace 'SG' with the actual value representing Singapore in your select tag phoneNumberInput.prop('disabled', true); errorDiv.html(`Due to new Singapore government regulations, we're currently not supporting text subscriptions in Singapore.<a href="https://community.atlassian.com/t5/Statuspage-articles/Attention-SMS-notifications-will-be-disabled-on-August-1st-2023/ba-p/2424398" target="_blank"> Learn more.</a> <br> Select another method to subscribe.`); } else { phoneNumberInput.prop('readonly', false); errorDiv.html(''); if(false){ if(isOtpEnabled){ document.getElementById('subscribe-btn-sms').value = "Send OTP"; } else { isOtpFlow.value = false; document.getElementById('subscribe-btn-sms').value = "Subscribe via Text Message"; } } } } $('#phone-country').on('change', checkSelectedCountry); checkSelectedCountry(); } }); document.addEventListener('DOMContentLoaded', function() { const dropdown = document.querySelector('#phone-number-country-code .phone-country'); if (dropdown){ const wrapperDiv = document.getElementById('phone-number-country-code'); const selectedOption = dropdown.options[dropdown.selectedIndex]; const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); dropdown.addEventListener('change', function() { const selectedOption = dropdown.options[dropdown.selectedIndex]; const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); }); } }); var countdownTimer; var resendBtn = document.getElementById('resend'); var timer = document.getElementById('timer'); var form = document.getElementById('subscribe-form-sms'); var RESEND_TIMER = 30; $(function() { $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ const form = this; const action = form.getAttribute('action'); if (data.type === 'success' && data.otp_flow === true) { document.getElementById('subscriber_code').value = data.subscriber_code document.getElementById('otp-container').style.display = "block"; $('#phone-number').prop('readonly', true); var display = document.getElementById('countdown'); disableResend(); startTimer(RESEND_TIMER, display) document.getElementById('subscribe-btn-sms').value = "Verify OTP and Subscribe"; document.getElementById('otp_verify_flow').value = true; form.action = '/subscriptions/verify-otp'; } else if (data.type === 'success' && action.includes('verify')){ document.getElementById('otp-container').style.display = "none"; $('#phone-number').val('').prop('readonly', false); $('#otp').val(''); document.getElementById('subscribe-btn-sms').value = "Send OTP"; document.getElementById('otp_verify_flow').value = false; form.action = '/subscriptions/new-sms'; SP.currentPage.updatesDropdown.hide(); } }); $("#btn-subcriber-change-number").on('click', () => { document.getElementById('otp-container').style.display = "none"; $('#phone-number').prop('readonly', false); document.getElementById('subscribe-btn-sms').value = "Send OTP"; form.action = '/subscriptions/new-sms'; return false }) $('#resend-otp-btn').on('click', function(e) { e.preventDefault(); let phoneNumber = $('#phone-number').val(); let countryCode = $('.phone-country').val(); $.ajax({ type: 'POST', url: "/subscriptions/new-sms", data: { phone_number: phoneNumber, phone_country: countryCode, type: 'resend' }, }).done(function(data) { var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; HRB.utils.notify(data.text, messageOptions); var display = document.getElementById('countdown'); disableResend(); timer.style.display = "none" if (data.type === 'success') { startTimer(RESEND_TIMER, display); } }) }); }) function startTimer(duration, display){ var timer = duration, seconds; clearInterval(countdownTimer); countdownTimer = setInterval(function () { seconds = parseInt(timer % 60, 10); display.textContent = seconds; if(--timer < 0){ enableResend(); clearInterval(countdownTimer); } }, 1000); disableResend(); } function enableResend(){ resendBtn.style.display = "block"; timer.style.display = "none" } function disableResend(){ resendBtn.style.display = "none"; timer.style.display = "block" } $(function() { $('#subscribe-form-email').on('submit', function() { var tokenField = document.getElementById('email-otp-token-field'); let page_code = "kctbh9vrtdwd" let key = keyForEmailOtpToken($('#email').val(), page_code); tokenField.value = localStorage.getItem(key); }); }); var emailOtpCountdownTimer; var emailOtpResendBtn = document.getElementById('resend-email-otp'); var emailOtpTimer = document.getElementById('email-otp-timer'); var emailOtpForm = document.getElementById('subscribe-form-email'); var EMAIL_OTP_RESEND_TIMER = 600; $(function() { $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ const form = this; const action = form.getAttribute('action'); if (data.type === 'success' && data.email_otp_verify_flow === true) { document.getElementById('email-otp-container').style.display = "block"; var display = document.getElementById('email-otp-countdown'); display.textContent = EMAIL_OTP_RESEND_TIMER; disableEmailOtpResend(); startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display) document.getElementById('subscribe-btn-email').value = "Verify OTP and Subscribe"; document.getElementById('email_otp_verify_flow').value = true; form.action = '/subscriptions/verify-email-otp'; } else if (data.type === 'success' && action.includes('verify')){ let email = $('#email') let page_code = "kctbh9vrtdwd" let key = keyForEmailOtpToken(email.val(), page_code); localStorage.setItem(key, data.email_otp_auth_token); document.getElementById('email-otp-container').style.display = "none"; email.val('').prop('readonly', false); $('#email-otp').val(''); document.getElementById('subscribe-btn-email').value = "Send OTP"; document.getElementById('email_otp_verify_flow').value = false; form.action = '/subscriptions/new-email'; SP.currentPage.updatesDropdown.hide(); } }); $('#resend-email-otp-btn').on('click', function(e) { e.preventDefault(); let email = $('#email').val(); $.ajax({ type: 'POST', url: "/subscriptions/new-email", data: { email: email }, }).done(function(data) { var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; HRB.utils.notify(data.text, messageOptions); if (data.type === 'success') { var display = document.getElementById('email-otp-countdown'); display.textContent = EMAIL_OTP_RESEND_TIMER; disableEmailOtpResend(); emailOtpTimer.style.display = "none" startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display); } }) }); }) function startEmailOtpTimer(duration, display){ var timer = duration, seconds; clearInterval(emailOtpCountdownTimer); emailOtpCountdownTimer = setInterval(function () { seconds = parseInt(timer, 10); display.textContent = seconds; if(--timer < 0){ enableEmailOtpResend(); clearInterval(emailOtpCountdownTimer); } }, 1000); disableEmailOtpResend(); } function enableEmailOtpResend(){ emailOtpResendBtn.style.display = "block"; emailOtpTimer.style.display = "none" } function disableEmailOtpResend(){ emailOtpResendBtn.style.display = "none"; emailOtpTimer.style.display = "block" } function keyForEmailOtpToken(email, pageCode) { return email + '|' + pageCode+ '|SUBSCRIBE_VIA_EMAIL'; } </script> </div> <div class="container"> <h4>Incident History</h4> <div data-react-class="HistoryIndex" data-react-props="{"page_status":{"page":{"name":"GitHub","subdomain":"github3","domain":"www.githubstatus.com","created_at":"2017-01-31T20:01:46.612Z","updated_at":"2025-03-28T04:23:10.196Z","url":"https://github.com","hidden_from_search":false,"css_body_background_color":"ffffff","css_font_color":"24292e","css_light_font_color":"6a737d","css_greens":"28a745","css_yellows":"dbab09","css_oranges":"e36209","css_reds":"dc3545","allow_page_subscribers":true,"allow_incident_subscribers":true,"notifications_from_email":"GitHub Status \u003cnoreply@githubstatus.com\u003e","allow_email_subscribers":true,"allow_sms_subscribers":true,"twitter_username":"githubstatus","branding":"basic","support_url":"https://github.com/support","allow_webhook_subscribers":true,"css_border_color":"e1e4e8","css_graph_color":"0366d6","css_link_color":"0366d6","page_description":"For the status of GitHub Enterprise Cloud - EU, please visit: \u003ca href=\"https://eu.githubstatus.com\"\u003eeu.githubstatus.com\u003c/a\u003e\r\nFor the status of GitHub Enterprise Cloud - Australia, please visit: \u003ca href=\"https://au.githubstatus.com\"\u003eau.githubstatus.com\u003c/a\u003e","activity_score":3154,"headline":null,"viewers_must_be_team_members":false,"ip_filters":null,"css_blues":"0366d6","time_zone":"UTC","notifications_reply_to_email":null,"notifications_email_footer":"You received this email because you are subscribed to GitHub's service status notifications.","allow_rss_atom_feeds":true,"black_hole":null,"over_allocations_cohort":null,"over_allocations_resolved_at":null,"custom_components_limit":null,"allow_slack_subscribers":true,"css_no_data":"b3bac5","deleted_at":null,"allow_teams_subscription":false,"max_maintenance_automation_allowed":null,"hero_cover":{"updated_at":null,"original_url":"","size":null,"normal_url":"","retina_url":""},"transactional_logo":{"updated_at":"2018-02-05T16:24:16.000+00:00","original_url":"//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/original/36420/hTgCmUjbT7WMYBbAnxDp","size":7056,"normal_url":"//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/normal/36420/hTgCmUjbT7WMYBbAnxDp","retina_url":"//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/retina/36420/hTgCmUjbT7WMYBbAnxDp"},"favicon_logo":{"updated_at":"2018-01-17T23:38:34.000+00:00","size":6518,"url":"//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/36420/akacZEQQfOBdc7ftyxJt"},"email_logo":{"updated_at":null,"original_url":"","size":null,"normal_url":"","retina_url":""},"twitter_logo":{"updated_at":"2019-01-10T19:02:40.000+00:00","size":4268,"url":"//dka575ofm4ao0.cloudfront.net/pages-twitter_logos/original/36420/GitHub-Mark-120px-plus.png"},"id":"kctbh9vrtdwd","organization_id":"30gcnw2xxnb0"}},"components":[{"status":"operational","name":"Git Operations","created_at":"2017-01-31T20:05:05.370Z","updated_at":"2025-03-03T05:20:43.188Z","position":1,"description":"Performance of git clones, pulls, pushes, and associated operations","showcase":false,"start_date":null,"id":"8l4ygp009s5s","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Webhooks","created_at":"2019-11-13T18:00:24.256Z","updated_at":"2025-03-20T20:54:07.339Z","position":2,"description":"Real time HTTP callbacks of user-generated and system events","showcase":false,"start_date":null,"id":"4230lsnqdsld","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Visit www.githubstatus.com for more information","created_at":"2018-12-05T19:39:40.838Z","updated_at":"2025-03-19T05:00:21.309Z","position":3,"description":null,"showcase":false,"start_date":null,"id":"0l2p9nhqnxpd","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"API Requests","created_at":"2017-01-31T20:01:46.621Z","updated_at":"2025-03-03T05:31:19.626Z","position":4,"description":"Requests for GitHub APIs","showcase":false,"start_date":null,"id":"brv1bkgrwx7q","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Issues","created_at":"2017-01-31T20:01:46.638Z","updated_at":"2025-03-17T23:02:33.249Z","position":5,"description":"Requests for Issues on GitHub.com","showcase":false,"start_date":null,"id":"kr09ddfgbfsf","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Pull Requests","created_at":"2020-09-02T15:39:06.329Z","updated_at":"2025-03-28T01:40:38.271Z","position":6,"description":"Requests for Pull Requests on GitHub.com","showcase":false,"start_date":null,"id":"hhtssxt0f5v2","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Actions","created_at":"2019-11-13T18:02:19.432Z","updated_at":"2025-03-21T09:34:18.695Z","position":7,"description":"Workflows, Compute and Orchestration for GitHub Actions","showcase":false,"start_date":null,"id":"br0l2tvcx85d","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Packages","created_at":"2019-11-13T18:02:40.064Z","updated_at":"2025-02-26T17:19:02.400Z","position":8,"description":"API requests and webhook delivery for GitHub Packages","showcase":false,"start_date":null,"id":"st3j38cctv9l","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Pages","created_at":"2017-01-31T20:04:33.923Z","updated_at":"2025-03-20T20:54:07.359Z","position":9,"description":"Frontend application and API servers for Pages builds","showcase":false,"start_date":null,"id":"vg70hn9s2tyj","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Codespaces","created_at":"2021-08-11T16:02:09.505Z","updated_at":"2025-03-21T03:08:40.099Z","position":10,"description":"Orchestration and Compute for GitHub Codespaces","showcase":false,"start_date":"2021-08-11T00:00:00.000Z","id":"h2ftsgbw7kmk","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Copilot","created_at":"2022-06-21T16:04:33.017Z","updated_at":"2025-03-21T13:44:10.174Z","position":11,"description":null,"showcase":false,"start_date":"2022-06-21T00:00:00.000Z","id":"pjmpxvq2cmr2","group_id":null,"page_id":"kctbh9vrtdwd","group":false,"only_show_if_degraded":false}],"months":[{"name":"March","year":2025,"starts_on":6,"days":31,"incidents":[{"code":"lnvht7g03czs","name":"Disruption with Pull Request Ref Updates","message":"This incident has been resolved.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e27\u003c/var\u003e, \u003cvar data-var='time'\u003e23:49\u003c/var\u003e - Mar \u003cvar data-var='date'\u003e28\u003c/var\u003e, \u003cvar data-var='time'\u003e01:40\u003c/var\u003e UTC"},{"code":"cyf5mhwh42tt","name":"[Retroactive] Incident with Migrations Submitted Via GitHub UI","message":"Between 2024-03-23 18:10 UTC and 2024-03-24 16:10 UTC, migration jobs submitted through the GitHub UI experienced processing delays and increased failure rates. This issue only affected migrations initiated via the web interface. Migrations started through the API or the command line tool continued to function normally. We are sorry for the delayed post on githubstatus.com.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e23\u003c/var\u003e, \u003cvar data-var='time'\u003e18:00\u003c/var\u003e - \u003cvar data-var='time'\u003e18:00\u003c/var\u003e UTC"},{"code":"kgjdbjz65clj","name":"Disruption with some GitHub services","message":"On March 21st, 2025, between 11:45 UTC and 13:20 UTC, users were unable to interact with GitHub Copilot Chat in GitHub. The issue was caused by a recently deployed Ruby change that unintentionally overwrote a global value. This led to GitHub Copilot Chat in GitHub being misconfigured with an invalid URL, preventing it from connecting to our chat server. Other Copilot clients were not affected.\u003cbr /\u003e\u003cbr /\u003eWe mitigated the incident by identifying the source of the problematic query and rolling back the deployment.\u003cbr /\u003e\u003cbr /\u003eWe are reviewing our deployment tooling to reduce the time to mitigate similar incidents in the future. In parallel, we are also improving our test coverage for this category of error to prevent them from being deployed to production.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e21\u003c/var\u003e, \u003cvar data-var='time'\u003e12:40\u003c/var\u003e - \u003cvar data-var='time'\u003e13:44\u003c/var\u003e UTC"},{"code":"slgf0l5smt3j","name":"Intermittent GitHub Actions workflow failures","message":"On March 21st, 2025, between 05:43 UTC and 08:49 UTC, the Actions service experienced degradation, leading to workflow run failures. During the incident, approximately 2.45% of workflow runs failed due to an infrastructure failure. This incident was caused by intermittent failures in communicating with an underlying service provider. We are working to improve our resilience to downtime in this service provider and to reduce the time to mitigate in any future recurrences.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e21\u003c/var\u003e, \u003cvar data-var='time'\u003e06:21\u003c/var\u003e - \u003cvar data-var='time'\u003e09:34\u003c/var\u003e UTC"},{"code":"t1x87c1ntdcr","name":"Incident with Codespaces","message":"On March 21, 2025 between 01:00 UTC and 02:45 UTC, the Codespaces service was degraded and users in various regions experienced intermittent connection failures. The peak error error was 30% of connection attempts across 38% of Codespaces. This was due to a service deployment.\u003cbr /\u003e\u003cbr /\u003eThe incident was mitigated by completing the deployment to the impacted regions. \u003cbr /\u003e\u003cbr /\u003eWe are working with the service team to identify the cause of the connection losses and perform necessary repairs to avoid future occurrences.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e21\u003c/var\u003e, \u003cvar data-var='time'\u003e02:12\u003c/var\u003e - \u003cvar data-var='time'\u003e03:08\u003c/var\u003e UTC"},{"code":"kpkc9bwsd42f","name":"Incident with Pages","message":"On March 20, 2025, between 19:24 UTC and 20:42 UTC the GitHub Pages experience was degraded and returned 503s for some customers. We saw an error rate of roughly 2% for Pages views, and new page builds were unable to complete successfully before timing out. \u003cbr /\u003e\u003cbr /\u003eThis was due to replication failure at the database layer between a write destination and read destination. We mitigated the incident by redirecting reads to the same destination as writes. \u003cbr /\u003e\u003cbr /\u003eThe error with replication occurred while in this transitory phase, as we are in the process of migrating the underlying data for Pages to new database infrastructure. Additionally our monitors failed to detect the error.\u003cbr /\u003e\u003cbr /\u003eWe are addressing the underlying cause of the failed replication and telemetry. \u003cbr /\u003e","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e20\u003c/var\u003e, \u003cvar data-var='time'\u003e20:04\u003c/var\u003e - \u003cvar data-var='time'\u003e20:54\u003c/var\u003e UTC"},{"code":"tldgc85p3q2d","name":"[Scheduled] Scheduled Migrations Maintenance","message":"The scheduled maintenance has been completed.","impact":"maintenance","timestamp":"Mar \u003cvar data-var='date'\u003e18\u003c/var\u003e, \u003cvar data-var='time'\u003e21:00\u003c/var\u003e - Mar \u003cvar data-var='date'\u003e19\u003c/var\u003e, \u003cvar data-var='time'\u003e05:00\u003c/var\u003e UTC"},{"code":"lg4s05t6ttxb","name":"Incident with Actions: Queue Run Failures","message":"On March 18th, 2025, between 23:20 UTC and March 19th, 2025 00:15 UTC, the Actions service experienced degradation, leading to run start delays. During the incident, about 0.3% of all workflow runs queued during the time failed to start, about 0.67% of all workflow runs were delayed by an average of 10 minutes, and about 0.16% of all workflow runs ultimately ended with an infrastructure failure. This was due to a networking issue with an underlying service provider. At 00:15 UTC the service provider mitigated their issue, and service was restored immediately for Actions. We are working to improve our resilience to downtime in this service provider to reduce the time to mitigate in any future recurrences.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e18\u003c/var\u003e, \u003cvar data-var='time'\u003e23:45\u003c/var\u003e - Mar \u003cvar data-var='date'\u003e19\u003c/var\u003e, \u003cvar data-var='time'\u003e00:55\u003c/var\u003e UTC"},{"code":"fpkvkrdmh033","name":"Disruption with some GitHub services","message":"On March 18th, 2025, between 13:35 UTC and 17:45 UTC, some users of GitHub Copilot Chat in GitHub experienced intermittent failures when reading or writing messages in a thread, resulting in a degraded experience. The error rate peaked at 3% of requests to the service. This was due to an availability incident with a database provider. Around 16:15 UTC the upstream service provider mitigated their availability incident, and service was restored in the following hour.\u003cbr /\u003e\u003cbr /\u003eWe are working to improve our failover strategy for this database to reduce the time to mitigate similar incidents in the future.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e18\u003c/var\u003e, \u003cvar data-var='time'\u003e15:58\u003c/var\u003e - \u003cvar data-var='time'\u003e18:45\u003c/var\u003e UTC"},{"code":"yz50lpc8d4xq","name":"macos-15-arm64 hosted runner queue delays","message":"On March 18, between 13:04 and 16:55 UTC, Actions workflows relying on hosted runners using the beta MacOS 15 image experienced increased queue time waiting for available runners. An image update was pushed the previous day that included a performance reduction. The slower performance caused longer average runtimes, exhausting our available Mac capacity for this image. This was mitigated by rolling back the image update. We have updated our capacity allocation to the beta and other Mac images and are improving monitoring in our canary environments to catch this potential issue before it impacts customers.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e18\u003c/var\u003e, \u003cvar data-var='time'\u003e15:05\u003c/var\u003e - \u003cvar data-var='time'\u003e17:15\u003c/var\u003e UTC"},{"code":"y8x4xw6j3q84","name":"Incident with Issues","message":"Between March 17, 2025, 18:05 UTC and March 18, 2025, 09:50 UTC, GitHub.com experienced intermittent failures in web and API requests. These issues affected a small percentage of users (mostly related to pull requests and issues), with a peak error rate of 0.165% across all requests.\u003cbr /\u003e\u003cbr /\u003eWe identified a framework upgrade that caused kernel panics in our Kubernetes infrastructure as the root cause. We mitigated the incident by downgrading until we were able to disable a problematic feature. In response, we have investigated why the upgrade caused the unexpected issue, have taken steps to temporarily prevent it, and are working on longer term patch plans while improving our observability to ensure we can quickly react to similar classes of problems in the future.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e17\u003c/var\u003e, \u003cvar data-var='time'\u003e18:39\u003c/var\u003e - \u003cvar data-var='time'\u003e23:02\u003c/var\u003e UTC"},{"code":"nhcpszxtqxtm","name":"Some Actions users are seeing their workflow jobs failing to start","message":"On March 12, 2025, between 13:28 UTC and 14:07 UTC, the Actions service experienced degradation leading to run start delays. During the incident, about 0.6% of workflow runs failed to start, 0.8% of workflow runs were delayed by an average of one hour, and 0.1% of runs ultimately ended with an infrastructure failure. The issue stemmed from connectivity problems between the Actions services and certain nodes within one of our Redis clusters. The service began recovering once connectivity to the Redis cluster was restored at 13:41 UTC. These connectivity issues are typically not a concern because we can fail over to healthier replicas. However, due to an unrelated issue, there was a replication delay at the time of the incident, and failing over would have caused a greater impact on our customers. We are working on improving our resiliency and automation processes for this infrastructure to improve the speed of diagnosing and resolving similar issues in the future.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e12\u003c/var\u003e, \u003cvar data-var='time'\u003e13:28\u003c/var\u003e - \u003cvar data-var='time'\u003e14:07\u003c/var\u003e UTC"},{"code":"m7vl0x8k3j9c","name":"Incident with Actions and Pages","message":"On March 8, 2025, between 17:16 UTC and 18:02 UTC, GitHub Actions and Pages services experienced degraded performance leading to delays in workflow runs and Pages deployments. During this time, 34% of Actions workflow runs experienced delays, and a small percentage of runs using GitHub-hosted runners failed to start. Additionally, Pages deployments for sites without a custom Actions workflow (93% of them) did not run, preventing new changes from being deployed. \u003cbr /\u003e\u003cbr /\u003eAn unexpected data shape led to crashes in some of our pods. We mitigated the incident by excluding the affected pods and correcting the data that led to the crashes. We鈥檝e fixed the source of the unexpected data shape and have improved the overall resilience of our service against such occurrences.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e8\u003c/var\u003e, \u003cvar data-var='time'\u003e17:45\u003c/var\u003e - \u003cvar data-var='time'\u003e18:11\u003c/var\u003e UTC"},{"code":"lb0d8kp99f2v","name":"Disruption with some GitHub services","message":"On March 7, 2025, from 09:30 UTC to 11:07 UTC, we experienced a networking event that disrupted connectivity to our search infrastructure, impacting about 25% of search queries and indexing attempts. Searches for PRs, Issues, Actions workflow runs, Packages, Releases, and other products were impacted, resulting in failed requests or stale data. The connectivity issue self-resolved after 90 minutes. The backlog of indexing jobs was fully processed and saw recovery soon after, and queries to all indexes also saw an immediate return to normal throughput.\u003cbr /\u003e\u003cbr /\u003eWe are working with our cloud provider to identify the root cause and are researching additional layers of redundancy to reduce customer impact in the future for issues like this one. We are also exploring mitigation strategies for faster resolution.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e7\u003c/var\u003e, \u003cvar data-var='time'\u003e10:03\u003c/var\u003e - \u003cvar data-var='time'\u003e11:24\u003c/var\u003e UTC"},{"code":"291w7fn43fy1","name":"Incident with Issues, Git Operations and API Requests","message":"On March 3rd 2025 between 04:07 UTC and 09:36 UTC various GitHub services were degraded with an average error rate of 0.03% and peak error rate of 9%. This issue impacted web requests, API requests, and git operations. \u003cbr /\u003e\u003cbr /\u003eThis incident was triggered because a network node in one of GitHub's datacenter sites partially failed, resulting in silent packet drops for traffic served by that site. At 09:22 UTC, we identified the failing network node, and at 09:36 UTC we addressed the issue by removing the faulty network node from production.\u003cbr /\u003e\u003cbr /\u003eIn response to this incident, we are improving our monitoring capabilities to identify and respond to similar silent errors more effectively in the future.","impact":"minor","timestamp":"Mar \u003cvar data-var='date'\u003e3\u003c/var\u003e, \u003cvar data-var='time'\u003e04:20\u003c/var\u003e - \u003cvar data-var='time'\u003e05:31\u003c/var\u003e UTC"},{"code":"5ylj8dpvg096","name":"[Scheduled] Scheduled Codespaces Maintenance","message":"The scheduled maintenance has been completed.","impact":"maintenance","timestamp":"Feb \u003cvar data-var='date'\u003e28\u003c/var\u003e, \u003cvar data-var='time'\u003e17:00\u003c/var\u003e - Mar \u003cvar data-var='date'\u003e1\u003c/var\u003e, \u003cvar data-var='time'\u003e02:00\u003c/var\u003e UTC"}]},{"name":"February","year":2025,"starts_on":6,"days":28,"incidents":[{"code":"36ftd36c921f","name":"Elevated Request Latency for Write operations on github.com and api.github.com","message":"On February 28th, 2025, between 05:49 UTC and 06:55 UTC, a newly deployed background job caused increased load on GitHub鈥檚 primary database hosts, resulting in connection pool exhaustion. This led to degraded performance, manifesting as increased latency for write operations and elevated request timeout rates across multiple services.\u003cbr /\u003e\u003cbr /\u003eThe incident was mitigated by halting execution of the problematic background job and disabling the feature flag controlling the job execution. To prevent similar incidents in the future, we are collaborating on a plan to improve our production signals to better detect and respond to query performance issues.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e28\u003c/var\u003e, \u003cvar data-var='time'\u003e06:12\u003c/var\u003e - \u003cvar data-var='time'\u003e06:55\u003c/var\u003e UTC"},{"code":"3zss4vv50thx","name":"Disruption with some GitHub services","message":"On February 27, 2025, between 11:30 UTC and 12:22 UTC, Actions experienced degraded performance, leading to delays in workflow runs. On average, 5% of Actions workflow runs were delayed by 31 minutes. The delays were caused by updates in a dependent service that led to failures in Redis connectivity in one region. We mitigated the incident by failing over the impacted service and re-routing the service鈥檚 traffic out of that region. We are working to improve monitoring and processes of failover to reduce our time to detection and mitigation of issues like this one in the future.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e27\u003c/var\u003e, \u003cvar data-var='time'\u003e11:28\u003c/var\u003e - \u003cvar data-var='time'\u003e12:22\u003c/var\u003e UTC"},{"code":"2lxm4wb8wy3r","name":"Incident with Actions and Packages","message":"On February 26, 2025, between 14:51 UTC and 17:19 UTC, GitHub Packages experienced a service degradation, leading to billing-related failures when uploading and downloading Packages. During this period, the billing usage and budget pages were also inaccessible. Initially, we reported that GitHub Actions was affected, but we later determined that the impact was limited to jobs interacting with Packages services, while jobs that did not upload or download Packages remained unaffected.\u003cbr /\u003e\u003cbr /\u003eThe incident occurred due to an error in newly introduced code, which caused containers to get into a bad state, ultimately leading to billing API calls failing with 503 errors. We mitigated the issue by rolling back the contributing change. In response to this incident, we are enhancing error handling, improving the resiliency of our billing API calls to minimize customer impact, and improving change rollout practices to catch these potential issues prior to deployment.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e26\u003c/var\u003e, \u003cvar data-var='time'\u003e15:51\u003c/var\u003e - \u003cvar data-var='time'\u003e17:19\u003c/var\u003e UTC"},{"code":"flt2rxl1dg1t","name":"Disruption with some GitHub services","message":"On February 25th, 2025, between 14:25 UTC and 16:44 UTC email and web notifications experienced delivery delays. At the peak of the incident the delay resulted in ~10% of all notifications taking over 10 minutes to be delivered, with the remaining ~90% being delivered within 5-10 minutes. This was due to insufficient capacity in worker pools as a result of increased load during peak hours.\u003cbr /\u003e\u003cbr /\u003eWe also encountered delivery delays for a small number of webhooks, with delays of up-to 2.5 minutes to be delivered.\u003cbr /\u003e\u003cbr /\u003eWe mitigated the incident by scaling out the service to meet the demand.\u003cbr /\u003e\u003cbr /\u003eThe increase in capacity gives us extra headroom, and we are working to improve our capacity planning to prevent issues like this occurring in the future.","impact":"major","timestamp":"Feb \u003cvar data-var='date'\u003e25\u003c/var\u003e, \u003cvar data-var='time'\u003e15:12\u003c/var\u003e - \u003cvar data-var='time'\u003e16:50\u003c/var\u003e UTC"},{"code":"tskzz9n0bjpt","name":"Claude 3.7 Sonnet Partially Unavailable","message":"On February 25, 2025 between 13:40 UTC and 15:45 UTC the Claude 3.7 Sonnet model for GitHub Copilot Chat experienced degraded performance. During the impact, occasional requests to Claude would result in an immediate error to the user. This was due to upstream errors with one of our infrastructure providers, which have since been mitigated.\u003cbr /\u003e\u003cbr /\u003eWe are working with our infrastructure providers to reduce time to detection and implement additional failover options, to mitigate issues like this one in the future.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e25\u003c/var\u003e, \u003cvar data-var='time'\u003e14:40\u003c/var\u003e - \u003cvar data-var='time'\u003e15:45\u003c/var\u003e UTC"},{"code":"pnl2xrj64d7p","name":"Incident with Packages","message":"On February 25, 2025, between 00:17 UTC and 01:08 UTC, GitHub Packages experienced a service degradation, leading to failures uploading and downloading packages, along with increased latency for all requests to GitHub Packages registry. At peak impact, about 14% of uploads and downloads failed, and all Packages requests were delayed by an average of 7 seconds. The incident was caused by the rollout of a database configuration change that resulted in a degradation in database performance. We mitigated the incident by rolling back the contributing change and failing over the database. In response to this incident, we are tuning database configurations and resolving a source of deadlocks. We are also redistributing certain workloads to read replicas to reduce latency and enhance overall database performance.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e25\u003c/var\u003e, \u003cvar data-var='time'\u003e00:17\u003c/var\u003e - \u003cvar data-var='time'\u003e01:08\u003c/var\u003e UTC"},{"code":"9qsgrx7yc13z","name":"Claude 3.5 Sonnet model is unavailable in Copilot","message":"On February 24, 2025 between 21:42 UTC and 22:14 UTC the Claude 3.5 Sonnet model for GitHub Copilot Chat experienced degraded performance. During the impact, all requests to Claude 3.5 Sonnet would result in an immediate error to the user. This was due to misconfiguration within one of our infrastructure providers that has since been mitigated.\u003cbr /\u003e\u003cbr /\u003eWe are working to prevent this error from occurring in the future by implementing additional failover options. Additionally we are updating our playbooks and alerting to reduce time to detection.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e24\u003c/var\u003e, \u003cvar data-var='time'\u003e22:06\u003c/var\u003e - \u003cvar data-var='time'\u003e22:14\u003c/var\u003e UTC"},{"code":"135x076mn3tf","name":"Disruption with some GitHub services","message":"On February 21 2025 12:00 UTC - 2/24/2025, 18:31 UTC, the Copilot Metrics API failed to ingest daily metrics aggregations for all customers resulting in failure to populate new metrics from 2025-02-21 to 2025-02-24. This failure was triggered by the metrics ingestion process timing out when querying across the event dataset. The API was functional for retrieving historical metrics prior to 2025-02-21. \u003cbr /\u003e\u003cbr /\u003eOn Monday morning 2/24/2025, 15:00 UTC, customer support was notified of the issue and the team deployed a fix to resolve query timeouts and ran backfills for the data from 2025-02-21 to 2025-02-23.\u003cbr /\u003e\u003cbr /\u003eWe are working to prevent further outages by adding more alerting to timeouts and have further optimized all our queries to aggregate data.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e24\u003c/var\u003e, \u003cvar data-var='time'\u003e15:17\u003c/var\u003e - \u003cvar data-var='time'\u003e18:31\u003c/var\u003e UTC"},{"code":"t4vt31qhjx6q","name":"Incident with Issues","message":"On February 24, 2025, between 15:17 UTC and 17:08 UTC the GitHub Issues \u0026 Pull Requests services were degraded by showing stale results on search powered pages such as /issues and /pulls, meaning the displayed results may not have included the most recent updates. Additional features that depend on search functionality may have served stale results during this incident. There was no increase in latency for any of the services depending on search.\u003cbr /\u003eWe mitigated the incident by increasing the replica count for the workers that process background jobs related to search indexing. \u003cbr /\u003eWe are working on identifying the root cause to avoid similar incidents in the future.\u003cbr /\u003e","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e24\u003c/var\u003e, \u003cvar data-var='time'\u003e16:08\u003c/var\u003e - \u003cvar data-var='time'\u003e17:09\u003c/var\u003e UTC"},{"code":"nhzd9qzv27l8","name":"Disruption with some GitHub services","message":"On February 16th, 2025 from 11:30 UTC to 12:44 UTC, API requests to GitHub.com experienced increased latency and failures. Around 1% of API requests failed at the peak of this incident.\u003cbr /\u003e\u003cbr /\u003eThis outage was caused by an experimental feature that malfunctioned and generated excessive database latency. In response to this incident, the feature has been redesigned to avoid database load which should prevent similar issues going forward.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e16\u003c/var\u003e, \u003cvar data-var='time'\u003e12:08\u003c/var\u003e - \u003cvar data-var='time'\u003e12:44\u003c/var\u003e UTC"},{"code":"zxtwqgc613rl","name":"Disruption with some GitHub services","message":"On February 15, 2025, between 6:35 pm UTC and 4:15 am UTC the Codespaces service was degraded and users in various regions experienced intermittent connection failures. On average, the error rate was 50% and peaked at 65% of requests to the service. This was due to a service deployment.\u003cbr /\u003e\u003cbr /\u003eWe mitigated the incident by completing the deployment to the impacted regions.\u003cbr /\u003e\u003cbr /\u003eThe completion of this deployment should prevent future deployments of the service from negatively impacting Codespace connectivity.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e14\u003c/var\u003e, \u003cvar data-var='time'\u003e20:06\u003c/var\u003e - Feb \u003cvar data-var='date'\u003e15\u003c/var\u003e, \u003cvar data-var='time'\u003e04:15\u003c/var\u003e UTC"},{"code":"x07y6vhlvqg2","name":"[Retroactive] Incident with Migrations service","message":"Between Thursday 13th, 2025 19:30 UTC and Friday 14th, 2025 08:02 UTC the Migrations service was experiencing intermittent migration failures for some customers. This was caused by a code change that contained an edge case that erroneously failed some migrations.\n\nWe mitigated the incident by rolling back the code change.\n\nWe are working on improving our monitoring and deployment practices to reduce our time to detection and mitigation of issues like this one in the future.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e13\u003c/var\u003e, \u003cvar data-var='time'\u003e07:30\u003c/var\u003e - \u003cvar data-var='time'\u003e07:30\u003c/var\u003e UTC"},{"code":"6g38m7fyc324","name":"Claude Sonnet unavailable in GitHub Copilot","message":"On February 12th, 2025, between 21:30 UTC and 23:10 UTC the Copilot service was degraded and all requests to Claude 3.5 Sonnet were failing. No other models were impacted. \u003cbr /\u003e\u003cbr /\u003eThis was due to an issue with our upstream provider which was detected within 12 minutes, at which point we raised the issue to our provider to remediate. GitHub is working with our provider to improve the resiliency of the service.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e12\u003c/var\u003e, \u003cvar data-var='time'\u003e21:51\u003c/var\u003e - \u003cvar data-var='time'\u003e23:10\u003c/var\u003e UTC"},{"code":"yhn3m0yqdxmc","name":"Incident with GIT LFS and Other Requests","message":"On February 6, 2025, between 8:40AM UTC and 11:13AM UTC the GitHub REST API was degraded following the rollout of a new feature. The feature resulted in an increase in requests that saturated a cache and led to cascading failures in unrelated services. The error rate peaked at 100% of requests to the service.\u003cbr /\u003e\u003cbr /\u003eThe incident was mitigated by increasing the allocated memory to the cache and rolling back the feature that led to the cache saturation. To prevent future incidents, we are working to reduce the time to detect a similar issue and optimize the overall calls to the cache.\u003cbr /\u003e","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e6\u003c/var\u003e, \u003cvar data-var='time'\u003e09:42\u003c/var\u003e - \u003cvar data-var='time'\u003e11:13\u003c/var\u003e UTC"},{"code":"4s0n40wj3l02","name":"Actions Larger Runners Provisioning Delays","message":"Between Feb 5, 2025 00:34 UTC and 11:16 UTC, up to 7% of organizations using GitHub-hosted larger runners with public IP addresses had those jobs fail to start during the impact window. The issue was caused by a backend migration in the public IP management system, which caused certain public IP address runners to be placed in a non-functioning state.\u003cbr /\u003e\u003cbr /\u003eWe have improved the rollback steps for this migration to reduce the time to mitigate any future recurrences, are working to improve automated detection of this error state, and are improving the resiliency of runners to handle this error state without customer impact.","impact":"minor","timestamp":"Feb \u003cvar data-var='date'\u003e5\u003c/var\u003e, \u003cvar data-var='time'\u003e08:58\u003c/var\u003e - \u003cvar data-var='time'\u003e11:44\u003c/var\u003e UTC"},{"code":"m8ntcjv1w4pr","name":"[Retroactive] Incident with some GitHub services","message":"A component that imports external git repositories into GitHub had an incident that was caused by the improper internal configuration of a gem. We have since rolled back to a stable version, and all migrations are able to resume.","impact":"major","timestamp":"Feb \u003cvar data-var='date'\u003e3\u003c/var\u003e, \u003cvar data-var='time'\u003e19:37\u003c/var\u003e - \u003cvar data-var='time'\u003e19:37\u003c/var\u003e UTC"}]},{"name":"January","year":2025,"starts_on":3,"days":31,"incidents":[{"code":"nm83zrdky73y","name":"Incident with Pull Requests and Issues","message":"On January 30th, 2025 from 14:22 UTC to 14:48 UTC, web requests to GitHub.com experienced failures (at peak the error rate was 44%), with the average successful request taking over 3 seconds to complete.\u003cbr /\u003e\u003cbr /\u003eThis outage was caused by a hardware failure in the caching layer that supports rate limiting. In addition, the impact was prolonged due to a lack of automated failover for the caching layer. A manual failover of the primary to trusted hardware was performed following recovery to ensure that the issue would not reoccur under similar circumstances.\u003cbr /\u003e\u003cbr /\u003eAs a result of this incident, we will be moving to a high availability cache configuration and adding resilience to cache failures at this layer to ensure requests are able to be handled should similar circumstances happen in the future.","impact":"major","timestamp":"Jan \u003cvar data-var='date'\u003e30\u003c/var\u003e, \u003cvar data-var='time'\u003e14:29\u003c/var\u003e - \u003cvar data-var='time'\u003e15:39\u003c/var\u003e UTC"},{"code":"wg7n9ns64dsd","name":"Disruption with some GitHub services","message":"On 29 January 2025 between 14:00 UTC and 16:28 UTC Copilot chat in github.com was degraded, where chat messages which included chat skills failed to save to our datastore due to a change in client side generated identifiers.\u003cbr /\u003e\u003cbr /\u003eWe mitigated the incident by rolling back the client side changes. Based on this incident, we are working on better monitoring to reduce our detection time, fixing gaps in testing to prevent a repeat of incidents such as this one in the future.\u003cbr /\u003e","impact":"minor","timestamp":"Jan \u003cvar data-var='date'\u003e29\u003c/var\u003e, \u003cvar data-var='time'\u003e14:52\u003c/var\u003e - \u003cvar data-var='time'\u003e16:30\u003c/var\u003e UTC"},{"code":"r6j3fnl9j58q","name":"Disruption with some GitHub services","message":"On January 27th, 2025, between 23:32:00 UTC and 23:41:00 UTC the Audit Log Streaming service experienced an approximate 9 minute delay of Audit Log Events. Our systems maintained data continuity and we experienced no data loss. There was no impact to the Audit Log API or the Audit Log user interface. Any configured Audit Log Streaming endpoints received all relevant Audit Log Events (but they were delayed) and normal service was restored after the incident's resolution.","impact":"minor","timestamp":"Jan \u003cvar data-var='date'\u003e27\u003c/var\u003e, \u003cvar data-var='time'\u003e23:32\u003c/var\u003e - \u003cvar data-var='time'\u003e23:41\u003c/var\u003e UTC"},{"code":"7p05r5610bqd","name":"Incident With Migration Service","message":"Between Sunday 20:50 UTC and Monday 15:20 UTC the Migrations service was unable to process migrations. This was due to a invalid infrastructure credential. \n\nWe mitigated the issue by updating the credential internally.\n\nMechanisms and automation will be implemented to detect and prevent this issue again in the future.","impact":"none","timestamp":"Jan \u003cvar data-var='date'\u003e26\u003c/var\u003e, \u003cvar data-var='time'\u003e21:00\u003c/var\u003e - \u003cvar data-var='time'\u003e21:00\u003c/var\u003e UTC"},{"code":"gszmt35n7k20","name":"Incident with Actions","message":"On January 23, 2025, between 9:49 and 17:00 UTC, the available capacity of large hosted runners was degraded. On average, 26% of jobs requiring large runners had a \u003e5min delay getting a runner assigned. This was caused by the rollback of a configuration change and a latent bug in event processing, which was triggered by the mixed data shape that resulted from the rollback. The processing would reprocess the same events unnecessarily and cause the background job that manages large runner creation and deletion to run out of resources. It would automatically restart and continue processing, but the jobs were not able to keep up with production traffic. We mitigated the impact by using a feature flag to bypass the problematic event processing logic. While these changes had been rolling out in stages over the last few months and had been safely rolled back previously, an unrelated change prevented rollback from causing this problem in earlier stages.\u003cbr /\u003e\u003cbr /\u003eWe are reviewing and updating the feature flags in this event processing workflow to ensure that we have high confidence in rollback in all rollout stages. We are also improving observability of the event processing to reduce the time to diagnose and mitigate similar issues going forward.","impact":"minor","timestamp":"Jan \u003cvar data-var='date'\u003e23\u003c/var\u003e, \u003cvar data-var='time'\u003e10:25\u003c/var\u003e - \u003cvar data-var='time'\u003e17:27\u003c/var\u003e UTC"},{"code":"78wybrzyv0wf","name":"Incident with Pull Request Rebase Merges","message":"On January 16, 2025, between 00:45 UTC and 09:40 UTC the Pull Requests service was degraded and failed to generate rebase merge commits. This was due to a configuration change that introduced disagreements between replicas. These disagreements caused a secondary job to run, triggering timeouts while computing rebase merge commits. \u003cbr /\u003e\u003cbr /\u003eWe mitigated the incident by rolling back the configuration change.\u003cbr /\u003e\u003cbr /\u003eWe are working on improving our monitoring and deployment practices to reduce our time to detection and mitigation of issues like this one in the future.","impact":"minor","timestamp":"Jan \u003cvar data-var='date'\u003e16\u003c/var\u003e, \u003cvar data-var='time'\u003e06:22\u003c/var\u003e - \u003cvar data-var='time'\u003e09:40\u003c/var\u003e UTC"},{"code":"bll83wkgdd2m","name":"Disruption connecting to Codespaces","message":"On January 14, 2025, between 19:13 UTC and 21:210 UTC the Codespaces service was degraded and led to connection failures with running codespaces, with a 7.6% failure rate for connections during the degradation. Users with bad connections could not use impacted codespaces until they were stopped and restarted.\u003cbr /\u003e\u003cbr /\u003eThis was caused by bad connections left behind after a deployment in an upstream dependency that the Codespaces service still provided to clients. The incident self-mitigated as new connections replaced stale ones. We are coordinating to ensure connection stability with future deployments of this nature.","impact":"minor","timestamp":"Jan \u003cvar data-var='date'\u003e14\u003c/var\u003e, \u003cvar data-var='time'\u003e20:55\u003c/var\u003e - \u003cvar data-var='time'\u003e21:20\u003c/var\u003e UTC"},{"code":"qd96yfgvmcf9","name":"Incident with Git Operations","message":"On January 13, 2025, between 23:35 UTC and 00:24 UTC all Git operations were unavailable due to a configuration change causing our internal load balancer to drop requests between services that Git relies upon.\u003cbr /\u003e\u003cbr /\u003eWe mitigated the incident by rolling back the configuration change.\u003cbr /\u003e\u003cbr /\u003eWe are improving our monitoring and deployment practices to reduce our time to detection and automated mitigation for issues like this in the future.","impact":"major","timestamp":"Jan \u003cvar data-var='date'\u003e13\u003c/var\u003e, \u003cvar data-var='time'\u003e23:44\u003c/var\u003e - Jan \u003cvar data-var='date'\u003e14\u003c/var\u003e, \u003cvar data-var='time'\u003e00:28\u003c/var\u003e UTC"},{"code":"jbhcrj5xtggx","name":"Issues with VNet Injected Larger Hosted Runners in East US 2","message":"On January 9, 2025, larger hosted runners configured with Azure private networking in East US 2 were degraded, causing delayed job starts for ~2,300 jobs between 16:00 and 20:00 UTC. There was also an earlier period of impact from 2025-01-08 22:00 UTC to 2025-01-09 4:10 UTC with 488 jobs impacted. The cause of both these delays was an incident in East US 2 impacting provisioning and network connectivity of Azure resources. More details on that incident are visible at https://azure.status.microsoft/en-us/status/history (Tracking ID: PLP3-1W8). Because these runners are reliant on private networking with networks in the East US 2 region, there were no immediate mitigations available other than restoring network connectivity. Going forward, we will continue evaluating options to provide better resilience to 3rd party regional outages that affect private networking customers.","impact":"minor","timestamp":"Jan \u003cvar data-var='date'\u003e9\u003c/var\u003e, \u003cvar data-var='time'\u003e17:12\u003c/var\u003e - \u003cvar data-var='time'\u003e20:00\u003c/var\u003e UTC"},{"code":"l76qh74ryp16","name":"Some GitHub Actions may not run","message":"On January 9, 2025, between 06:26 and 07:49 UTC, Actions experienced degraded performance, leading to failures in about 1% of workflow runs across ~10k repositories. The failures occurred due to an outage in a dependent service, which disrupted Redis connectivity in the East US 2 region. We mitigated the incident by re-routing Redis traffic out of that region at 07:49 UTC. We continued to monitor service recovery before resolving the incident at 08:30 UTC. We are working to improve our monitoring to reduce our time to detection and mitigation of issues like this one in the future.","impact":"minor","timestamp":"Jan \u003cvar data-var='date'\u003e9\u003c/var\u003e, \u003cvar data-var='time'\u003e07:15\u003c/var\u003e - \u003cvar data-var='time'\u003e08:30\u003c/var\u003e UTC"},{"code":"plgzz71xn6zq","name":"Incident with Webhooks","message":"On January 9, 2025, between 01:26 UTC and 01:56 UTC GitHub experienced widespread disruption to many services, with users receiving 500 responses when trying to access various functionality. This was due to a deployment which introduced a query that saturated a primary database server. On average, the error rate was 6% and peaked at 6.85% of update requests.\u003cbr /\u003e\u003cbr /\u003eWe mitigated the incident by identifying the source of the problematic query and rolling back the deployment.\u003cbr /\u003e\u003cbr /\u003eWe are investigating methods to detect problematic queries prior to deployment to prevent, and to reduce our time to detection and mitigation of issues like this one in the future.","impact":"major","timestamp":"Jan \u003cvar data-var='date'\u003e9\u003c/var\u003e, \u003cvar data-var='time'\u003e01:36\u003c/var\u003e - \u003cvar data-var='time'\u003e02:27\u003c/var\u003e UTC"},{"code":"dk61qxd21mtl","name":"Incident with Actions resulting in degraded performance","message":"On January 7th, 2025 between 11:54:00 and 16:39 UTC, degraded performance was observed in Actions, Webhooks, and Issues, caused by an internal Certificate Authority configuration change that disrupted our event infrastructure. The configuration issue was promptly identified and resolved by rolling the change back on impacted hosts and re-issuing certificates.\u003cbr /\u003e\u003cbr /\u003eWe have identified what services need updates to support the current PKI architecture and are working on implementing those changes to prevent a future recurrence.","impact":"minor","timestamp":"Jan \u003cvar data-var='date'\u003e7\u003c/var\u003e, \u003cvar data-var='time'\u003e14:49\u003c/var\u003e - \u003cvar data-var='time'\u003e16:39\u003c/var\u003e UTC"},{"code":"6ddp6v8g5t72","name":"Incident with Actions","message":"On January 2, 2025 between 16:00:00 and 22:27:30 UTC, a bug in feature-flagged code that cleans up Pull Requests after they are closed or merged incorrectly cleared the merge commit SHA for ~139,000 pull requests. During the incident, Actions workflows triggered by the \u003ci\u003eon: pull_request\u003c/i\u003e trigger for the \u003ci\u003eclosed\u003c/i\u003e type were not queued successfully because of these missing merge commit SHAs. Approximately 45,000 repositories experienced these missing workflow triggers in either of two possible scenarios: pull requests which were closed, but not merged; and pull requests which were merged. Impact was mitigated after rolling back the aforementioned feature flag. \u003cbr /\u003e\u003cbr /\u003eMerged pull requests that were affected have had their merge commit SHAs restored. Closed pull requests have not had their merge commit SHA restored; however, customers can re-open and close them again to recalculate this SHA. We are investigating methods to improve detection of these kinds of errors in the future.","impact":"minor","timestamp":"Jan \u003cvar data-var='date'\u003e2\u003c/var\u003e, \u003cvar data-var='time'\u003e22:09\u003c/var\u003e - Jan \u003cvar data-var='date'\u003e3\u003c/var\u003e, \u003cvar data-var='time'\u003e00:19\u003c/var\u003e UTC"}]}],"show_component_filter":false,"show_uptime_calendar":true,"component_filter":null,"start_time":"2025-01-01T00:00:00Z","end_time":"2025-03-31T23:59:59Z"}"></div> <div class="page-footer border-color font-small"> <a href="/" aria-label="Back to current status"> <span class="current-status-arrow">←</span> Current Status </a> <span class="color-secondary powered-by"><a class="color-secondary" target="_blank" rel="noopener noreferrer nofollow" href="https://www.atlassian.com/software/statuspage?utm_campaign=www.githubstatus.com&utm_content=SP-notifications&utm_medium=powered-by&utm_source=inapp">Powered by Atlassian Statuspage</a></span> </div> </div> </div> <script src="https://dka575ofm4ao0.cloudfront.net/assets/status_manifest-6a7ae3a8e2e1b1e1d9466495faa0851c3f5fff938743f6501c900aa2a8792e8c.js"></script> <div id="cpt-notification-container"></div> <!-- all of the content_for stuff --> <script src="https://dka575ofm4ao0.cloudfront.net/assets/register_subscription_form-589b657fec607087fc5c740c568270907310bc4f6aaa20256e70f01b103025ca.js"></script> <script type="text/javascript"> $(function() { SP.currentPage.registerSubscriptionForm('email'); SP.currentPage.registerSubscriptionForm('sms'); SP.currentPage.registerSubscriptionForm('webhook'); }); </script> <script src="https://dka575ofm4ao0.cloudfront.net/assets/status_common-c1b99d73ee7ab0fea796bd170723c1daac1381095a7dd7501a38ce6f333d86b3.js"></script> <div class="custom-footer-container"> <div class="footer mt-6 border-top" role="contentinfo"> <img src="https://user-images.githubusercontent.com/19292210/60553864-044dd200-9cea-11e9-996a-a7a316ec3a35.png" class="illo-mobile-footer" alt="GitHub footer"> <div class="container-lg p-responsive"> <div class="d-flex flex-wrap py-5 mb-5"> <section class="col-12 col-lg-4 mb-5"> <a href="https://github.com/" data-ga-click="Footer, go to GitHub, text:GitHub" class="text-gray-dark" aria-label="GitHub text logo"> <svg height="32" class="octicon octicon-logo-github" viewBox="0 0 45 16" version="1.1" width="90" aria-hidden="true" role="img"> <title>GitHub text logo</title> <path fill-rule="evenodd" d="M18.53 12.03h-.02c.009 0 .015.01.024.011h.006l-.01-.01zm.004.011c-.093.001-.327.05-.574.05-.78 0-1.05-.36-1.05-.83V8.13h1.59c.09 0 .16-.08.16-.19v-1.7c0-.09-.08-.17-.16-.17h-1.59V3.96c0-.08-.05-.13-.14-.13h-2.16c-.09 0-.14.05-.14.13v2.17s-1.09.27-1.16.28c-.08.02-.13.09-.13.17v1.36c0 .11.08.19.17.19h1.11v3.28c0 2.44 1.7 2.69 2.86 2.69.53 0 1.17-.17 1.27-.22.06-.02.09-.09.09-.16v-1.5a.177.177 0 0 0-.146-.18zm23.696-2.2c0-1.81-.73-2.05-1.5-1.97-.6.04-1.08.34-1.08.34v3.52s.49.34 1.22.36c1.03.03 1.36-.34 1.36-2.25zm2.43-.16c0 3.43-1.11 4.41-3.05 4.41-1.64 0-2.52-.83-2.52-.83s-.04.46-.09.52c-.03.06-.08.08-.14.08h-1.48c-.1 0-.19-.08-.19-.17l.02-11.11c0-.09.08-.17.17-.17h2.13c.09 0 .17.08.17.17v3.77s.82-.53 2.02-.53l-.01-.02c1.2 0 2.97.45 2.97 3.88zm-8.72-3.61h-2.1c-.11 0-.17.08-.17.19v5.44s-.55.39-1.3.39-.97-.34-.97-1.09V6.25c0-.09-.08-.17-.17-.17h-2.14c-.09 0-.17.08-.17.17v5.11c0 2.2 1.23 2.75 2.92 2.75 1.39 0 2.52-.77 2.52-.77s.05.39.08.45c.02.05.09.09.16.09h1.34c.11 0 .17-.08.17-.17l.02-7.47c0-.09-.08-.17-.19-.17zm-23.7-.01h-2.13c-.09 0-.17.09-.17.2v7.34c0 .2.13.27.3.27h1.92c.2 0 .25-.09.25-.27V6.23c0-.09-.08-.17-.17-.17zm-1.05-3.38c-.77 0-1.38.61-1.38 1.38 0 .77.61 1.38 1.38 1.38.75 0 1.36-.61 1.36-1.38 0-.77-.61-1.38-1.36-1.38zm16.49-.25h-2.11c-.09 0-.17.08-.17.17v4.09h-3.31V2.6c0-.09-.08-.17-.17-.17h-2.13c-.09 0-.17.08-.17.17v11.11c0 .09.09.17.17.17h2.13c.09 0 .17-.08.17-.17V8.96h3.31l-.02 4.75c0 .09.08.17.17.17h2.13c.09 0 .17-.08.17-.17V2.6c0-.09-.08-.17-.17-.17zM8.81 7.35v5.74c0 .04-.01.11-.06.13 0 0-1.25.89-3.31.89-2.49 0-5.44-.78-5.44-5.92S2.58 1.99 5.1 2c2.18 0 3.06.49 3.2.58.04.05.06.09.06.14L7.94 4.5c0 .09-.09.2-.2.17-.36-.11-.9-.33-2.17-.33-1.47 0-3.05.42-3.05 3.73s1.5 3.7 2.58 3.7c.92 0 1.25-.11 1.25-.11v-2.3H4.88c-.11 0-.19-.08-.19-.17V7.35c0-.09.08-.17.19-.17h3.74c.11 0 .19.08.19.17z"> </path> </svg> </a> <h3 class="h5 mt-4 mb-0" id="subscribe-to-newsletter">Subscribe to our developer newsletter</h3> <p class="f5 color-fg-muted mb-3">Get tips, technical guides, and best practices. Twice a month. Right in your inbox.</p> <a href="https://resources.github.com/newsletter/" class="btn btn-muted mb-4">Subscribe</a> </section> <nav class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-lg-0 pl-lg-4" aria-labelledby="footer-title-product"> <h3 class="h5 mb-3 text-mono color-fg-muted text-normal" id="footer-title-product">Product</h3> <ul class="list-style-none color-fg-muted f5"> <li class="lh-condensed mb-3"><a href="https://github.com/features" data-ga-click="Footer, go to features, text:features" class="link-gray">Features</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/enterprise" data-ga-click="Footer, go to enterprise, text:enterprise" class="link-gray">Enterprise</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/features/copilot" ddata-ga-click="Footer, go to copilot, text:copilot" class="link-gray">Copilot</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security" class="link-gray">Security</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/pricing" data-ga-click="Footer, go to pricing, text:pricing" class="link-gray">Pricing</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/team" data-ga-click="Footer, go to team, text:team" class="link-gray">Team</a></li> <li class="lh-condensed mb-3"><a href="https://resources.github.com" data-ga-click="Footer, go to resources, text:resources" class="link-gray">Resources</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/github/roadmap" data-ga-click="Footer, go to roadmap, text:roadmap" class="link-gray">Roadmap</a></li> <li class="lh-condensed mb-3"><a href="https://resources.github.com/devops/tools/compare" data-ga-click="Footer, go to compare, text:compare" class="link-gray">Compare GitHub</a></li> </ul> </nav> <nav class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-md-0 pl-md-4" aria-labelledby="footer-title-platform"> <h3 class="h5 mb-3 text-mono color-fg-muted text-normal" id="footer-title-platform">Platform</h3> <ul class="list-style-none f5"> <li class="lh-condensed mb-3"><a href="https://docs.github.com/get-started/exploring-integrations/about-building-integrations" data-ga-click="Footer, go to api, text:api" class="link-gray">Developer API</a></li> <li class="lh-condensed mb-3"><a href="https://partner.github.com" data-ga-click="Footer, go to partners, text:partners" class="link-gray">Partners</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/edu" data-ga-click="Footer, go to education, text:education" class="link-gray">Education</a></li> <li class="lh-condensed mb-3"><a href="https://cli.github.com" data-ga-click="Footer, go to github cli, text:cli" class="link-gray">GitHub CLI</a></li> <li class="lh-condensed mb-3"><a href="https://desktop.github.com" data-ga-click="Footer, go to github desktop, text:desktop" class="link-gray">GitHub Desktop</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/mobile" data-ga-click="Footer, go to github mobile, text:mobile" class="link-gray">GitHub Mobile</a></li> </ul> </nav> <nav class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-md-0 pl-md-4" aria-labelledby="footer-title-support"> <h3 class="h5 mb-3 text-mono color-fg-muted text-normal" id="footer-title-support">Support</h3> <ul class="list-style-none f5"> <li class="lh-condensed mb-3"><a href="https://docs.github.com" data-ga-click="Footer, go to docs, text:docs" class="link-gray">Docs</a></li> <li class="lh-condensed mb-3"><a href="https://github.community" data-ga-click="Footer, go to community, text:community" class="link-gray">Community Forum</a></li> <li class="lh-condensed mb-3"><a href="https://services.github.com" data-ga-click="Footer, go to services, text:services" class="link-gray">Professional Services</a></li> <li class="lh-condensed mb-3"><a href="https://skills.github.com" data-ga-click="Footer, go to skills, text:skills" class="link-gray">Skills</a></li> <li class="lh-condensed mb-3"><a href="https://support.github.com?tags=dotcom-footer" data-ga-click="Footer, go to support, text:support" class="link-gray">Contact GitHub</a></li> </ul> </nav> <nav class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-md-0 pl-md-4" aria-labelledby="footer-title-company"> <h3 class="h5 mb-3 text-mono color-fg-muted text-normal" id="footer-title-company">Company</h3> <ul class="list-style-none f5"> <li class="lh-condensed mb-3"><a href="https://github.com/about/" data-ga-click="Footer, go to support, text:support" class="link-gray">About</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/customer-stories?type=enterprise" data-ga-click="Footer, go to customer-stories, text:customer-stories" class="link-gray">Customer stories</a></li> <li class="lh-condensed mb-3"><a href="https://github.blog/" data-ga-click="Footer, go to blog, text:blog" class="link-gray">Blog</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/readme" data-ga-click="Footer, go to readme, text:readme" class="link-gray">The ReadME Project</a></li> <li class="lh-condensed mb-3"><a href="https://github.careers/" data-ga-click="Footer, go to careers, text:careers" class="link-gray">Careers</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/newsroom" data-ga-click="Footer, go to newsroom, text:newsroom" class="link-gray">Newsroom</a></li> <li class="lh-condensed mb-3"><a href="https://github.com/about/diversity" data-ga-click="Footer, go to diversity, text:diversity" class="link-gray">Inclusion</a></li> <li class="lh-condensed mb-3"><a href="https://socialimpact.github.com/" data-ga-click="Footer, go to socialimpact, text:socialimpact" class="link-gray">Social Impact</a></li> <li class="lh-condensed mb-3"><a href="https://shop.github.com/" data-ga-click="Footer, go to shop, text:shop" class="link-gray">Shop</a></li> </ul> </nav> </div> </div> <div class="color-bg-subtle"> <div class="container-lg p-responsive f6 py-4 d-md-flex flex-justify-between flex-items-center"> <nav aria-label="Legal and Resource Links"> <ul class="list-style-none d-flex flex-wrap text-gray"> <li class="mr-3">© <script>document.write( new Date().getFullYear() );</script> GitHub, Inc.</li> <li class="mr-3"><a href="https://docs.github.com/site-policy/github-terms/github-terms-of-service/" data-ga-click="Footer, go to terms, text:terms" class="link-gray">Terms</a></li> <li class="mr-3"><a href="https://help.github.com/articles/github-privacy-statement/" data-ga-click="Footer, go to privacy, text:privacy" class="link-gray">Privacy</a> (<a href="https://github.com/github/site-policy/pull/582" class="link-gray">Updated <time datetime="2022-08">08/2022</time></a>)</li> </ul> </nav> <nav aria-label="GitHub's Social Media Links" class="mt-3 mt-md-0"> <ul class="list-style-none d-flex flex-wrap"> <li class="mr-3"><a href="https://x.com/github" data-ga-click="Footer, go to Twitter, text:twitter" aria-label="GitHub X" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="d-block" height="20" width="20" role="img"> <title>GitHub X</title> <path fill="currentColor" d="M14.28 10.38L23.2 0h-2.1L13.8 9.02L7.14 0H0l10.13 14.7L0 25.5h2.1l7.64-9.38l6.9 9.38H23.2L12.72 10.38zM3.06 1.62h2.76L20.94 23.9h-2.76L3.06 1.62z"/> </svg> </a></li> <li class="mr-3"><a href="https://www.facebook.com/GitHub" data-ga-click="Footer, go to Facebook, text:facebook" aria-label="GitHub Facebook" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="d-block" height="20" width="20" role="img"> <title>GitHub Facebook</title> <path fill="currentColor" d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/> </svg> </a></li> <li class="mr-3"><a href="https://www.linkedin.com/company/github" data-ga-click="Footer, go to Linkedin, text:linkedin" aria-label="GitHub LinkedIn" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="d-block" height="20" width="20" role="img"> <title>GitHub LinkedIn</title> <path fill="currentColor" d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/> </svg> </a></li> <li class="mr-3"><a href="https://www.youtube.com/github" data-ga-click="Footer, go to YouTube, text:youtube" aria-label="GitHub YouTube" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="d-block" height="20" width="20" role="img"> <title>GitHub YouTube</title> <path fill="currentColor" d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/> </svg> </a></li> <li class="mr-3"><a href="https://www.twitch.tv/github" data-ga-click="Footer, go to Twitch, text:twitch" aria-label="Twitch" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="d-block" height="20" width="20" role="img"> <title>Twitch</title> <path fill="currentColor" d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714z"/> </svg> </a></li> <li class="mr-3"><a href="https://www.tiktok.com/@github" data-ga-click="Footer, go to TikTok, text:tiktok" aria-label="TikTok" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="d-block" height="20" width="20" role="img"> <title>TikTok</title> <path fill="currentColor" d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"/> </svg> </a></li> <li class="mr-3"><a href="https://github.com/github" data-ga-click="Footer, go to github's org, text:github" aria-label="GitHub.com" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="d-block" height="20" width="20" role="img"> <title>GitHub.com</title> <path fill="currentColor" d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/> </svg> </a></li> </ul> </nav> </div> </div> </div> <script> $('.components-container').toggleClass('one-column').toggleClass('two-columns') $(document).ready(function () { if ($('body').hasClass('status-none')) { $('link[rel="shortcut icon"]').attr("href", "https://github.githubassets.com/favicons/favicon-success.png") } else { $('link[rel="shortcut icon"]').attr("href", "https://github.githubassets.com/favicons/favicon-pending.png") } // Move "about this page" text section after the Incident History link $('.text-section').insertAfter('.history-footer-link'); $('span.name:contains("Visit www.githubstatus.com for more information")').parents('div.component-container').hide() $('div.status-green span.component-status').html("") $('div.status-yellow span.component-status').html("") $('div.status-orange span.component-status').html("") $('div.status-red span.component-status').html("") $('.outage-field .label .major_outage').parent().html("") var otherParent = $('span.name:contains("Other")').parent() if (otherParent.hasClass('status-green')) { otherParent.parent().hide() } $('.page-status.status-major span.status, .page-status.status-minor span.status').html('Some services are degraded') $('.outage-field .label .partial_outage').parent().html("Degradation") $('.incidents-list').remove() $('.component-statuses-legend').remove() $('div.status-green').append("<span class='status-msg'>Normal</span>") $('div.status-yellow').append("<span class='status-msg'>Degraded</span>") $('div.status-orange').append("<span class='status-msg'>Degraded</span>") $('div.status-red').append("<span class='status-msg'>Incident</span>") $('div.status-blue').append("<span class='status-msg'>Maintenance</span>") }); </script> </div> <script> /** INITIALIZATION **/ var recaptchaIds = {} // Unfortunately there's no unique selectors on the parent divs that recaptcha adds. The first unique selector // is the iframe rendered 2 levels deep. So this waits until the iframes are added to the page, then finds // the parent div and sets the z index so that it'll render above our modals & dropdowns from the start. function setZIndex(captchaCount, startTime) { // bail after 10s just in case so we don't do this forever if something whaky happens if (new Date() - startTime > 10000) { return; } var iframes = document.querySelectorAll('iframe[title="recaptcha challenge"]'); if (iframes.length != captchaCount) { setTimeout(function() { setZIndex(captchaCount, startTime); }, 500); } for (var i = 0; i < iframes.length; i++) { // incident subscribe modal is 1050, so this has to be above that iframes[i].parentElement.parentElement.style.zIndex = "1100"; } } function updateCaptchaIframeTitle(captchaCount, startTime, updates=0) { if (new Date() - startTime > 10000 || captchaCount === updates) { return; } var iframesWithTitle = document.querySelectorAll('iframe[title="recaptcha challenge expires in two minutes"]'); if (iframesWithTitle.length != captchaCount) { setTimeout(function() { updateCaptchaIframeTitle(captchaCount, startTime, iframesWithTitle.length + updates); }, 500); } for (var i = 0; i < iframesWithTitle.length; i++) { iframesWithTitle[i].title = "recaptcha"; } } function addIncidentCaptcha() { var incidentCaptcha = document.createElement('div'); incidentCaptcha.setAttribute('id', 'subscribe-incident-recaptcha'); incidentCaptcha.setAttribute('class', 'g-recaptcha'); incidentCaptcha.setAttribute('data-sitekey', '6LcZ-b0UAAAAAENi956aWzynTT2ZJ80dGU3F80Op'); incidentCaptcha.setAttribute('data-callback', 'submitIncidentSubscriberSuccess'); incidentCaptcha.setAttribute('data-error-callback', 'submitIncidentSubscriberError'); incidentCaptcha.setAttribute('data-size', 'invisible'); document.body.appendChild(incidentCaptcha); var incidentCode = document.createElement('input'); incidentCode.setAttribute('type', 'hidden'); incidentCode.setAttribute('id', 'submit_incident_code'); document.body.appendChild(incidentCode); } var onloadCallback = function() { // if there is an incident, then add incident captcha element if (document.getElementsByClassName('modal-open-incident-subscribe').length > 0) { addIncidentCaptcha(); } var captchas = document.getElementsByClassName("g-recaptcha"); for(var i = 0; i < captchas.length; i++) { var elId = captchas[i].id; recaptchaIds[elId] = grecaptcha.enterprise.render(elId); } setZIndex(captchas.length, new Date()); updateCaptchaIframeTitle(captchas.length, new Date()); } /** SUBSCRIBE DROPDOWN */ // callbacks for captcha success function submitNewSubscriber(type, error) { if (error) document.querySelector('#subscribe-form-' + type + ' #captcha_error').value = 'true'; document.getElementById('subscribe-form-' + type).dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); grecaptcha.enterprise.reset(recaptchaIds['subscribe-btn-' + type]); } function submitNewEmailSubscriber(token) { submitNewSubscriber('email'); } function submitNewSmsSubscriber(token) { submitNewSubscriber('sms'); } function submitNewWebhookSubscriber(token) { submitNewSubscriber('webhook'); } function submitIncidentSubscriber(token, error) { var incidentCode = document.getElementById('submit_incident_code').value; var incidentForm = document.getElementById('subscribe-form-' + incidentCode); incidentForm.querySelector('input[name="captcha_error"]').value = error; incidentForm.querySelector('input[name="g-recaptcha-response"]').value = token; incidentForm.dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); grecaptcha.enterprise.reset(recaptchaIds['subscribe-incident-recaptcha']); } function submitIncidentSubscriberSuccess(token) { submitIncidentSubscriber(token, 'false'); } // callbacks if we get captcha network errors function emailSubscriberCaptchaError(token) { submitNewSubscriber('email', true); } function smsSubscriberCaptchaError(token) { submitNewSubscriber('sms', true); } function webhookSubscriberCaptchaError(token) { submitNewSubscriber('webhook', true); } function submitIncidentSubscriberError(token) { submitIncidentSubscriber(token, 'true'); } // tracking clicks ['email', 'sms', 'webhook'].forEach(function(type) { var el = document.getElementById('subscribe-btn-' + type); el && el.addEventListener("click", function() { $.ajax({ type: "POST", url: "/subscriptions/track_attempt", data: { type: type } }) }) }) // form submission success callbacks $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ if (data.type === 'success') { SP.currentPage.updatesDropdown.hide(); document.getElementById('email').value = ''; } }); $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ if (data.type === 'success' && data.otp_flow !== true) { SP.currentPage.updatesDropdown.hide(); document.getElementById('phone-number').value = ''; } }); $('#subscribe-form-webhook').on('ajax:success', function(e, data, status, xhr){ if (data.type === 'success') { SP.currentPage.updatesDropdown.hide(); document.getElementById('endpoint-webhooks').value = ''; document.getElementById('email-webhooks').value = ''; } }); $('a.subscribe').on('click', function() { document.body.style.overflow = "hidden"; document.body.style.height = "100vh"; }); $('div.modal-open-incident-subscribe').on('hidden', function(){ document.body.style.overflow = ""; document.body.style.height = ""; }); function submitCaptchaIncidentSubscribe(event) { var incidentCode = event.target.id.split('-')[2]; event.preventDefault(); $.ajax({ type: "POST", url: "/subscriptions/track_attempt", data: { type: 'incident' } }) document.getElementById('submit_incident_code').value = incidentCode; grecaptcha.enterprise.execute(recaptchaIds['subscribe-incident-recaptcha']); } </script> <script src='https://www.recaptcha.net/recaptcha/enterprise.js?onload=onloadCallback&render=explicit' async defer></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/common-b45a59df4cdf9120c9c3.chunk.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/globals-ab1c4b5ca64732f9a6c8.chunk.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/runtime-3ef142c0b15a6ca88d16.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/status-2580f71c6cc7679add77.chunk.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/components-9ddb957530fe3417c345.chunk.js"></script> <script> window.addEventListener('load', function () { const urlParams = new URLSearchParams(window.location.search); const messageToken = urlParams.get('slack_message_token'); const channelName = escape(urlParams.get('channel_name')); if(!!messageToken) { switch(messageToken) { case 'slack_auth_error': HRB.utils.notify('The Slack authorization attempt was unsuccessful. Try again.', {cssClass:'error'}); break; case 'subscribers_disabled_error': HRB.utils.notify('Slack subscriptions are not enabled on this page.', {cssClass:'error'}); break; case 'direct_message_channel_error': HRB.utils.notify('Subscriptions aren鈥檛 supported in direct messages. Try subscribing again and choose a channel instead.', {cssClass:'error'}); break case 'duplicate_error': HRB.utils.notify("You're already subscribed to get Slack notifications in that channel.", {cssClass:'error'}); break; case 'duplicate_private_channel_error': HRB.utils.notify(`You're already subscribed to get Slack notifications in #${channelName}. Invite the @Statuspage app to that channel to start getting status updates.`, {cssClass: 'error'}); break; case 'default_success': HRB.utils.notify("You're now subscribed to get Statuspage updates in Slack!", {cssClass:'success'}); break; case 'private_channel_success': HRB.utils.notify(`IMPORTANT: Invite the @Statuspage app to your Slack channel #${channelName} to start getting status updates.`, {cssClass:'success'}); break; } } }); </script> <!-- FOR FLASH NOTICES --> <!-- FOR ERROR --> <script> $(function() { var $link = $('<span class="color-secondary powered-by"><a class="color-secondary" target="_blank" rel="noopener noreferrer nofollow" href="https://www.atlassian.com/software/statuspage?utm_campaign=www.githubstatus.com&utm_content=SP-notifications&utm_medium=powered-by&utm_source=inapp">Powered by Atlassian Statuspage</a></span>'); var setPoweredByStyles = function() { if (!$('.powered-by').length) { $link.appendTo($('.page-footer')) } $('.powered-by').attr('style', 'display: inline !important; visibility:visible !important; opacity: 1 !important; position:static !important; text-indent:0px !important; transform:scale(1) !important'); } setInterval(setPoweredByStyles, 1000); }); </script> </body> </html>