Close dialogue1/1Next imagePrevious imageToggle captionPrint subscriptionsNewsletters Sign indocument.addEventListener('DOMContentLoaded', function () { /** The checkbox input element used to toggle the navigation menu. */ const navInputCheckbox = document.getElementById('header-nav-input-checkbox'); /** The veggie burger button element used to open/close the menu. */ const veggieBurger = document.getElementById('header-veggie-burger'); /** List of menu items that should be selectable when the menu is open. */ const expandedMenuClickableTags = document.querySelectorAll( '.selectableMenuItem', ); /** The root element of the expanded menu. */ const expandedMenu = document.getElementById('header-expanded-menu-root'); /** The label for the first column in the menu, assumed to be "News".*/ const firstColLabel = document.getElementById('News-button'); /** The link element in the second list item under news links. */ const firstColLink = document.querySelector( '#newsLinks > li:nth-of-type(2) > a', ); /** * Focuses on the first navigation element depending on whether the first column label is visible. * * If the first column label is not visible, the function focuses on the first link element. * Otherwise, it focuses on the first column label. */ const focusOnFirstNavElement = () => { if (window.getComputedStyle(firstColLabel).display === 'none') { firstColLink.focus(); } else { firstColLabel.focus(); } }; /** * Updates ARIA attributes and tabindex values based on whether the menu is open or closed. */ const updateAttributesForMenu = (isOpen) => { firstColLabel.setAttribute('aria-expanded', isOpen ? 'true' : 'false'); veggieBurger.setAttribute( 'data-link-name', isOpen ? 'header : veggie-burger : hide' : 'header : veggie-burger : show', ); expandedMenuClickableTags.forEach((tag) => { tag.setAttribute('tabindex', isOpen ? '0' : '-1'); }); }; /** Toggles the navigation menu by simulating a click on the checkbox. */ const toggleMainMenu = () => { if (navInputCheckbox) { navInputCheckbox.click(); } }; /** * Handles keydown events to toggle the menu when the Enter or Space key is pressed. */ const keydownToggleMainMenu = (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggleMainMenu(); } }; /** * Handles click events to manage the state of the navigation menu. * * - Toggles the menu open/close state when the menu button (veggieBurger) is clicked. */ const handleMenuClick = (e) => { const menuButtonClicked = navInputCheckbox === e.target; const clickInsideMenu = expandedMenu.contains(e.target); const menuIsOpen = navInputCheckbox.checked if (menuButtonClicked && !menuIsOpen) { document.body.classList.toggle('nav-is-open') firstColLabel.setAttribute('aria-expanded', 'false') veggieBurger.setAttribute('data-link-name','header : veggie-burger : show') expandedMenuClickableTags.forEach(function($selectableElement){ $selectableElement.setAttribute('tabindex','-1') }) } else if (menuButtonClicked && menuIsOpen) { document.body.classList.toggle('nav-is-open') firstColLabel.setAttribute('aria-expanded', 'true') veggieBurger.setAttribute('data-link-name','header : veggie-burger : hide') expandedMenuClickableTags.forEach(function($selectableElement){ $selectableElement.setAttribute('tabindex','0') }) focusOnFirstNavElement() } }; /** Adds event listeners to manage the navigation menu. */ if (navInputCheckbox) { navInputCheckbox.addEventListener('click', handleMenuClick); veggieBurger.addEventListener('keydown', keydownToggleMainMenu); document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && navInputCheckbox.checked) { toggleMainMenu(); veggieBurger.focus(); } }); /** * Handles mouse down events to manage the state of the navigation menu. * * - Closes the menu if the click occurs outside both the menu button and the expanded menu. */ document.addEventListener('mousedown', function(e){ if(navInputCheckbox.checked && !expandedMenu.contains(e.target) && !veggieBurger.contains(e.target)){ toggleMainMenu() } }); } });USUS editionUK editionAustralia editionEurope editionInternational editionThe Guardian - Back to homeThe GuardianNewsOpinionSportCultureLifestyleShow moreHide expanded menudocument.addEventListener('DOMContentLoaded', function(){ var columnInput = document.getElementById('News-button'); if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test. columnInput.addEventListener('keydown', function(e){ // keyCode: 13 => Enter key | keyCode: 32 => Space key if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault() document.getElementById('News-checkbox-input').click(); } }) })NewsView all NewsUS newsUS politicsMidterms 2026World newsClimate crisisMiddle EastUkraineUS immigrationSoccerBusinessEnvironmentTechScienceNewslettersThe FilterWellnessdocument.addEventListener('DOMContentLoaded', function(){ var columnInput = document.getElementById('Opinion-button'); if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test. columnInput.addEventListener('keydown', function(e){ // keyCode: 13 => Enter key | keyCode: 32 => Space key if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault() document.getElementById('Opinion-checkbox-input').click(); } }) })OpinionView all OpinionThe Guardian viewColumnistsLettersOpinion videosCartoonsdocument.addEventListener('DOMContentLoaded', function(){ var columnInput = document.getElementById('Sport-button'); if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test. columnInput.addEventListener('keydown', function(e){ // keyCode: 13 => Enter key | keyCode: 32 => Space key if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault() document.getElementById('Sport-checkbox-input').click(); } }) })SportView all SportSoccerNFLTennisMLBMLSNBAWNBANHLF1Golfdocument.addEventListener('DOMContentLoaded', function(){ var columnInput = document.getElementById('Culture-button'); if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test. columnInput.addEventListener('keydown', function(e){ // keyCode: 13 => Enter key | keyCode: 32 => Space key if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault() document.getElementById('Culture-checkbox-input').click(); } }) })CultureView all CultureFilmBooksMusicArt & designTV & radioStageClassicalGamesDesign a better worlddocument.addEventListener('DOMContentLoaded', function(){ var columnInput = document.getElementById('Lifestyle-button'); if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test. columnInput.addEventListener('keydown', function(e){ // keyCode: 13 => Enter key | keyCode: 32 => Space key if (e.keyCode === 13 || e.keyCode === 32) { e.preventDefault() document.getElementById('Lifestyle-checkbox-input').click(); } }) })LifestyleView all LifestyleThe FilterWellnessFashionFoodRecipesLove & sexHome & gardenHealth & fitnessFamilyTravelMoneySearch input google-search SearchSupport usPrint subscriptionsNewslettersDownload the appSearch jobsDigital ArchiveGuardian LicensingLive eventsAbout UsThe Guardian appVideoPodcastsPicturesInside the GuardianGuardian WeeklyCrosswordsWordiplyCorrectionsTipsSearch input google-search SearchSearch jobsDigital ArchiveGuardian LicensingLive eventsAbout UsUKUS politicsWorldClimate crisisMiddle EastUkraineFootballNewslettersBusinessEnvironmentUK politicsScienceTechGlobal developmentObituaries An OpenAI booth at the Dreamforce technology summit in San Francisco on Thursday. Photograph: Carlos Barría/ReutersView image in fullscreenAn OpenAI booth at the Dreamforce technology summit in San Francisco on Thursday. Photograph: Carlos Barría/ReutersOpenAIOpenAI ‘ethically hacked’ with help of Anthropic’s Claude chatbotUS cybersecurity researchers who conducted hack say ‘scope of what we could theoretically access was huge’

Prefer the Guardian on GoogleCybersecurity researchers have hacked into OpenAI with the help of Anthropic’s Claude chatbot, in the latest example of security issues at the company.

A team at a US-based startup compromised a number of OpenAI employees’ ChatGPT accounts, starting a process that enabled them to access their target’s software cache – and potentially more.

Initially, the research team used Claude, which can generate code for hackers, to access ChatGPT accounts via an OpenAI staff discussion forum hosted by the Discourse platform. They then made a harmless “pull request” – an attempt to change the code in a file – to OpenAI’s service on the GitHub software repository.

Hacktron reported the hack to OpenAI, having carried out the operation under an OpenAI programme that rewarded ethical hackers for testing its systems. The researchers stressed that they had access to, but did not download, the code from the GitHub repository.

This article was aggregated automatically by CyberWire Daily's newsfeed engine. Original reporting: www.theguardian.com.