91³Ô¹ÏÍø

Watch CBS News

OpenAI whistleblower Suchir Balaji dead at age 26; family seeks answers as death ruled suicide

A former researcher at OpenAI was found dead inside of his California apartment last month, authorities said. Suchir Balaji, 26, had in recent months become a whistleblower against OpenAI, speaking publicly about the company's practices and questioning whether or not they were legal.

Balaji died by suicide, the San Francisco Medical Examiner's Office told CBS News in a statement. There was no evidence of foul play. 

His body was discovered Nov. 26 inside of his apartment in San Francisco, where OpenAI is headquartered, CBS News partner , citing police. Officers said they performed a welfare check at Balaji's residence after receiving a call requesting them to do so.

Balaji's family told the Associated Press that they are planning a memorial for him, set to take place later in December at the India Community Center in Milpitas, California, near his hometown. His parents, Poornima Ramarao and Balaji Ramamurthy, told the AP that they are seeking answers about their son's death and described him as a "happy, smart and brave young man." 

OpenAI Whistleblower Death
Suchir Balaji poses for a photo in Hawaii in 2018. Balaji was a former OpenAI engineer and whistleblower who died in November 2024. (Balaji Ramamurthy via AP) Balaji Ramamurthy / AP

"We are devastated to learn of this incredible sad news and our hearts go out to Suchir's loved ones during this difficult time," said a spokesperson for OpenAI in a statement to the Associated Press.

Originally from Cupertino, California, Balaji worked for four years as a researcher at OpenAI before leaving the company in August. He alleged in an October interview that OpenAI, an artificial intelligence organization co-founded by Tesla magnate Elon Musk, had violated United States copyright law as it developed ChatGPT, which Balaji himself helped build during his time with the company. Balaji subsequently told the Associated Press that he would "try to testify" in the strongest copyright infringement cases against his former employer.

OpenAI now faces a group of lawsuits brought by various news publishers across the U.S. and Canada as well as some individuals — including The New York Times and the authors John Grisham and Jodie Picoult — accusing OpenAI of illegally using their intellectual property to train the online  chatbot. Although Musk was originally a co-founder of OpenAI, he engaged in a monthslong attack against the company, most recently claiming in a lawsuit that its conversion to a for-profit company is "illegal."

John Schulman, who also co-founded OpenAI and announced his own departure from the company in August, shared a tribute to Balaji after his death that Balaji's father posted on social media.

In it, Schulman said he was "heartbroken to hear of Suchir's passing" and called Balaji "one of my favorite and most talented collaborators."

CBS News contacted OpenAI but did not receive an immediate response.


If you or someone you know is in emotional distress or a suicidal crisis, you can reach the by calling or texting 988. You can also .

For more information about , The National Alliance on Mental Illness HelpLine can be reached Monday through Friday, 10 a.m.–10 p.m. ET, at 1-800-950-NAMI (6264) or email info@nami.org.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });