91³Ô¹ÏÍø

Watch CBS News

Send a secure tip to 60 Minutes: Here's how to confidentially share information with our journalists

Send tips to 60 Minutes

For 57 years, 60 Minutes has been reporting on a wide range of important issues: politics and corruption; technology and intelligence; health care and education. 

If you have a newsworthy story that you think 60 Minutes should know about, we now have a secure way for you to contact us and share sensitive information and documents. 

In every report we've aired that has involved a confidential source, we have honored our agreements. The tools we use to protect your confidentiality are described below. 

But first, what is a good 60 Minutes story idea?

What makes a good tip for 60 Minutes?

Tips should be about stories that are impactful and relevant to a large audience. Describe what's at stake and why your tip matters now. Be specific, detailed and clear. Finally, please provide evidence or documentation to support your idea.

Please do not send press releases, editorials, blogs or feedback through these channels.

If you'd like us to be in touch with you about this tip, please provide contact information that you believe is safe and secure. Let us know if there are any restrictions on when to reach out to you. 

An assigned team of journalists will be reviewing messages regularly, but we cannot guarantee every tip will receive an individual response.

How to reach us securely

Keeping our sources' identities confidential is a top priority for 60 Minutes. No communication system is completely foolproof, but here are ways you can contact the broadcast more securely:

Signal

Signal is a free app that offers encryption end-to-end to make calls and send text messages, PDFs, photos and videos privately and securely. This allows you to communicate directly with 60 Minutes. No metadata surrounding communications on Signal is retained. The app allows messages to self-destruct from user devices after a set amount of time, erasing both sides of the conversation. That feature can be found under the app's privacy settings. We recommend not messaging 60 Minutes from a corporate or employer-owned device or Wi-Fi network. 

After installing the app, you can message 60 Minutes at this designated Signal number: +1 917-682-0143.

You can also install the desktop version of Signal, which allows you to chat from your computer.

Postal Mail

We recommend that you use a public mailbox, not a post office, when sending us a letter or parcel. Address it to:

60 Minutes Story Unit
524 W. 57th Street, 14th Floor
New York, NY 10019

To help protect your identity, we recommend not putting a return address on the outside of the envelope. Instead, consider putting the return address inside the envelope or including a Signal phone number so we can contact you.

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(); } }); }); }); });