Skip to content
Rabin Poudyal
Rabin Poudyal
← All models

Wisdom and philosophy

Hanlon's razor

Never attribute to malice that which is adequately explained by stupidity, or more kindly, by error, haste or ignorance.

Robert J. Hanlon, a computer programmer at the Tobyhanna Army Depot near Scranton, Pennsylvania, who submitted it to Arthur Bloch's Murphy's Law Book Two (1980). The idea is older: Goethe wrote in 1774 that "misunderstandings and neglect occasion more mischief in the world than even malice and wickedness", and Robert Heinlein used a similar line in 1941.

When something goes wrong and it looks deliberate, the razor tells you to check the dull explanation first: someone made a mistake, did not know, or did not think. A rude email was written in a hurry. A broken API came from a team that never saw your use case. Most damage in organisations has no villain.

It works partly because of base rates: honest mistakes vastly outnumber schemes, so they are the more likely explanation for any given failure. It also keeps you useful. Assuming malice turns a problem into a fight and makes people defensive, and that hides the facts you need. Assuming error turns it into a question you can ask.

It is a default, not a verdict. Real malice exists: security incidents, fraud and bad-faith actors are not explained by stupidity, and a security team that applies the razor to every alert will miss an attack. Repeated "mistakes" that always benefit the same person deserve a second look. It also cuts both ways: "stupidity" is an uncharitable word, and the better reading is usually that the other person had less information than you.

Example

On 4 October 2021 Facebook, Instagram and WhatsApp disappeared from the internet. Cloudflare saw Facebook's routes withdrawn at about 15:40 Coordinated Universal Time (UTC), and service only began returning after 21:00 UTC. Meta's engineering write-up the next day said the outage was caused "not by malicious activity" but by a routine maintenance command meant to assess backbone capacity, which a bug in an audit tool failed to stop. With the backbone down, Facebook's Domain Name System (DNS) servers withdrew their Border Gateway Protocol (BGP) announcements, making the services unreachable.

Where it applies

When a teammate's change breaks your service, assume a missed edge case and write the blameless postmortem that way. When an AI model gives a harmful-looking answer, check the prompt, the retrieved context and the tool output for an ordinary bug before assuming a deliberate attack, while still treating real prompt injection as a live threat.

Think about it

Whose behaviour are you reading as hostile right now, and what is the most ordinary mistake that would explain it?

Applied it to something real? Log it.

Test yourselfWhy is error usually a better first explanation than malice when something goes wrong?

Honest mistakes are far more common than deliberate harm, and assuming error keeps people talking so you can find the facts. It is a starting point, so evidence of real intent should still change your mind.

Related models

Sources and further reading