Cryptosms — Where Technology Meets Perspective

Cryptosms — Where Technology Meets Perspective

Deep dives into software, hardware, and the ideas changing how we build things.

We cover the technical side of technology. Not just the product launches and press releases, but the architecture decisions, the tradeoffs, and the engineering culture that shapes what actually gets built. The stuff that matters when you’re knee-deep in code at 2 AM wondering why someone thought this was a good idea.

Topics we cover: Software · Hardware · Developer Tools · AI & Machine Learning · Open Source · Security

The Caution Triangle as a Boundary Statement: Reading the ‘Not Friendly Do Not Touch’ Shirt

The artwork is a warning sign. Across the chest, in the block lettering of industrial signage, it reads NOT FRIENDLY DO NOT TOUCH. Above the words sits a yellow caution triangle, and inside the triangle a hand is crossed out. The palette is the one every reader already knows from a thousand safety placards: yellow field, black border, black glyph. Nothing about the composition is subtle. That is the point.

I want to argue something specific about this shirt, and it is not that it is funny, though it is. The argument is that the design works because it borrows a visual grammar whose authority is procedural rather than personal. A caution triangle is not a mood. It is a claim about a hazard, issued in a format that implies someone inspected the hazard, classified it, and printed a sign. When that format is moved onto a torso, the wearer is not saying “I am grumpy today.” The wearer is saying: treat this as a standing condition, not a temporary state.

What the sign actually encodes

Look at the three elements separately. The triangle is the frame. In the safety-sign conventions most English-speaking readers have absorbed, a yellow triangle with a black border marks a warning — a condition that can cause harm if ignored. The crossed-out hand is the prohibition. It is the same glyph family as “no entry” or “do not touch,” a hand with a diagonal bar through it. And the lettering is the instruction, set in the flat, unadorned capitals that signage uses precisely because signage is not supposed to be charming.

Each element does a different job. The triangle says this is a warning, not a preference. The crossed-out hand says the specific prohibited action is contact. The words say the reason is not hostility but a fixed condition. Read together, they produce a sentence that is unusually precise for a t-shirt: I am not available for the social contact you are about to initiate, and this is a stable property of the object in front of you, not a reaction to you personally.

That is a more interesting claim than “introvert.” The retail title uses the word, and it is a fair shorthand, but the artwork itself does not depict shyness or fatigue. It depicts a hazard label. The difference matters. A hazard label is impersonal by design. It does not ask you to interpret a face; it asks you to read a sign and comply.

The difference between a slogan and a usable promise

Most boundary humor on shirts fails because it states a feeling instead of a rule. “Sorry I’m late, I didn’t want to come” is a joke about reluctance. “Not friendly, do not touch” is a joke about enforcement. The first invites a laugh and a conversation. The second, dressed as a sign, pretends to be a regulation. That pretense is the whole mechanism.

I keep thinking about this in the terms I use for specifications. A slogan is a description. A promise is a constraint. A description can be true or false and still be useless. A constraint tells you what will happen if you cross it. The caution-triangle design is funny because it upgrades a preference into a constraint — it borrows the form of something enforceable and applies it to something that is, in fact, only a preference. The humor lives in that gap. The wearer is not actually a hazard. But the sign is formatted as if the wearer had been inspected and labeled, and the formality of the format is what makes the bluntness land.

This is also why the design reads as terse rather than rude. Signage is allowed to be abrupt because signage is not addressed to you as a person. It is addressed to you as a pedestrian, a visitor, a member of the public. The shirt borrows that distance. It says the unfriendly thing in the voice of a laminated placard bolted to a wall, and that voice is what keeps the message from sounding like an insult.

Why the crossed-out hand is the load-bearing element

Strip the hand away and you have a yellow triangle with words under it. That is a generic warning. Strip the triangle away and you have a crossed-out hand, which is a prohibition but not a classified one. The combination is what produces the specific meaning: contact is the hazard. The hand is doing the work of naming the exact action being refused, and the triangle is doing the work of saying the refusal is categorical.

I find this the most carefully built part of the design. A lot of introvert merchandise gestures vaguely at “people” or “talking.” This one names a physical boundary — touch — and puts a bar through it. That is a narrower and more honest claim. It is not “I dislike all interaction.” It is “do not initiate physical contact.” The sign format lets the wearer make that narrow claim without having to soften it, because the format itself supplies the politeness that the words omit.

What the shirt is not

I want to be careful here, because it would be easy to overread the object. The artwork is a graphic. It is not evidence about the wearer’s personality, and it is not a claim about introversion as a category. The retail title calls it an introvert shirt, and the search phrase readers use — not friendly do not touch shirt — describes the intent of someone looking for exactly this kind of boundary joke. But the design itself does not diagnose anyone. It is a visual joke built from safety-sign conventions, and its meaning is produced by the reader’s familiarity with those conventions, not by any claim about the person wearing it.

Nor does the shirt do anything. It does not enforce a boundary; it announces one. A sign on a door does not lock the door. The humor depends on the wearer and the reader both knowing that the sign is a costume of authority, not authority itself. That is the same reason the design can be funny at all: if it were a real hazard label, it would not be a joke.

If you want the object itself, the listing is here: Not Friendly Do Not Touch Funny Warning Sign Introvert from Quirky Cotton Collective. The design is the one described above — the warning-sign lettering, the yellow caution triangle, the crossed-out hand — and the argument in this piece is about that artwork, not about how it wears.

The sign as a small piece of interface design

The reason this design holds up better than most boundary slogans is that it treats the shirt as an interface. An interface does not argue with you. It presents a state and the permitted actions. The caution triangle presents the state — not friendly — and the crossed-out hand presents the permitted action — do not touch. The words are redundant with the glyphs on purpose, the way real signage is redundant, because signage is read at a glance by people who are not paying attention.

That redundancy is the design’s best decision. A shirt is read in motion, from across a room, in poor light, by someone who has already decided to approach. The triangle and the hand register before the words do. By the time the reader has parsed the lettering, the message has already been delivered twice. That is how good signage works, and it is why this particular joke survives being worn rather than just being seen once in a product photo.

The caution triangle is a boundary statement because it takes the most impersonal visual format available and points it at the most personal space a stranger can cross. The shirt is funny for the same reason it is legible: it refuses to negotiate. It states a condition, names the prohibited action, and lets the format carry the authority the words do not claim. That is a small, well-built piece of visual rhetoric, and it is worth reading closely for exactly that reason.

Editorial note: This publication and Quirky Cotton Collective share an owner.

The Composition Notebook as a Costume: What the Speckled Cover Actually Says

The shirt does not show a notebook. It shows a picture of a notebook cover, printed on fabric: a black-and-white speckled rectangle, a dark binding strip down the left edge, and a white ruled label headed COMPOSITION with an outlined ghost and pumpkin inside it. That distinction — printed representation versus physical object — is the whole design, and it is also the most interesting thing about it.

Most costume shirts work by announcing a role in words: Teacher, Witch, This Is My Costume. This one works by substituting a surface. The wearer is not labeled as a teacher or as a notebook; the wearer is covered in the visual texture of a school supply. The joke is structural rather than verbal, and that changes how the garment reads in a group, in a photograph, and at a distance.

Reading the artwork literally

Start with what is actually printed, because the retail prose is looser than the image. The rectangle is speckled black and white — the marbled recycled-paper look that composition books have carried for decades. The binding strip is dark and runs the full height on the left. The label is white with ruled lines, and the word COMPOSITION sits at the top in the familiar serif. Inside the ruled area, instead of a child’s name and subject, there is an outlined ghost and an outlined pumpkin.

That last substitution is the only overt Halloween element. Everything else is stationery. The ghost and pumpkin are drawn in outline, not filled, which keeps them visually subordinate to the label and the speckle. The design does not shout; it relies on recognition. If you have ever held a composition book, the proportions and the label placement register before you consciously read them.

I am describing the supplied garment image, not a physical notebook and not a wearing experience. The shirt is a printed notebook cover, and the print is the argument.

Why a surface beats a slogan

There is a practical reason this kind of design works for a group costume. A slogan shirt requires everyone to read the same words and agree on the joke. A surface shirt requires only that people recognize the object. Recognition is faster and more forgiving. In a staff photo, at a classroom door, or across a parking lot, the speckled rectangle and the white label do the work before anyone reads a word.

It also scales. A group costume needs a design that survives being worn by people of different heights, builds, and tolerances for costume effort. A printed cover is close to a uniform without being one. The binding strip gives a vertical anchor; the label gives a focal point near the chest; the speckle hides wrinkles and distance. None of that is a claim about fabric or fit — it is a claim about composition, and composition is what a printed costume has to get right.

The trade-off is that the design is quiet. Up close, the ghost and pumpkin are small. From across a room, they may read as texture. That is not a flaw so much as a calibration: the shirt is legible as notebook at a distance and legible as Halloween notebook up close. Whether that suits a given event is a judgment the wearer makes, not something the artwork can settle.

The label as a small piece of information design

The white label is the most carefully structured part of the print. It has a header, a ruled field, and a bounded area for content. That is a form. Composition books use it because a form invites handwriting: name, subject, date. The shirt keeps the form and replaces the handwriting with two drawn figures.

I read that as a joke about empty fields. The label is designed to be filled in, and here it is filled with a ghost and a pumpkin — the minimum viable Halloween content. The ruled lines remain, so the field still looks like a field. The outline style keeps the figures from becoming illustrations that overwhelm the form. The result is a design that respects the original object’s information hierarchy: header first, field second, content third.

That is a more disciplined approach than a generic school slogan shirt usually takes. A slogan flattens the object into a caption. This print keeps the object’s structure and edits only the content. For readers who spend their working lives looking at interfaces, forms, and labels, that is the part worth noticing. The design is not just a notebook; it is a notebook with one field changed.

What the design does not claim

It is worth being explicit about the limits of the observation. The print does not demonstrate anything about teaching, about school culture, or about group dynamics. It does not establish that the shirt is comfortable, that it fits a particular way, or that anyone has worn it to an event. The retail listing describes a standard t-shirt and a printed design; the visual observation establishes the design and nothing beyond it.

The keyword composition notebook shirt describes what a reader is looking for, not a verified property of the garment. The design is a costume surface, and the useful question is whether the surface reads clearly in the situations the wearer has in mind. That question is answered by looking at the print, not by a slogan on the listing.

If you want the object itself, the listing is here: Composition Notebook Costume Teacher Group Halloween.

A group costume is a shared surface

The phrase teacher group Halloween in the title points at the real use case: several people wearing the same visual idea at once. A shared surface works differently from a shared slogan. With a slogan, the group is saying the same sentence. With a surface, the group is occupying the same visual category. That is closer to how uniforms and team colors work, and it is more tolerant of individual variation.

The design also has a natural pairing logic. A composition notebook is one object among many in a classroom: pencils, erasers, rulers, a chalkboard. A group could wear the notebook and carry the other objects, or wear the notebook and let the print be the only costume element. The shirt does not require accessories, which is part of its practicality. It is a costume that fits in a normal morning.

I would not overstate the cleverness. The ghost and pumpkin are simple, the palette is black, white, and outline, and the joke is gentle. But gentle is appropriate here. The design’s restraint is what keeps it from becoming a novelty shirt that only works once. The notebook cover is a familiar form, and familiar forms survive repetition better than punchlines do.

Verify this yourself

The reproduction steps for a visual claim are simple, and they are worth doing before buying. Open the listing and look at the garment image at full size. Confirm four things: the speckled rectangle, the dark binding strip on the left, the white ruled label headed COMPOSITION, and the outlined ghost and pumpkin inside the label. Then check the scale. The label should occupy a readable portion of the chest area, and the ghost and pumpkin should be visible without being dominant. If the image you see matches those four elements, the design is the one described here.

For a group purchase, compare the same image across the sizes you are considering and confirm that the print placement is consistent. That is a check on the listing’s images, not a claim about fit. The artwork is the evidence; the rest is a decision about whether a quiet, recognizable surface suits the event.

Editorial note: this publication and Quirky Cotton Collective share an owner.

The Notification That Tells You Nothing: Reading the ‘There Is Motion at Your Front Door’ Shirt

The shirt prints a white rounded notification banner with a bell icon. Inside the banner, in plain sans-serif: There is motion at your front door. Below the banner sits a circular, green-tinted view — the fisheye crop of a doorbell camera — containing a wide-eyed orange tabby pressed close to the lens, porch siding and a light fixture visible behind its head. That is the whole design. No caption, no punchline, no second panel.

What interests me is not the cat. It is the sentence. There is motion at your front door is a notification, and a notification is a claim about the world delivered with almost no information in it. The artwork reproduces the exact grammar of an alert: a subject exists, an event occurred, a location is specified. It does not say who, or what, or whether the event matters. The camera view below the banner is the only thing that resolves the ambiguity, and it resolves it into a joke — the motion was a cat, the cat is enormous in frame, the porch is otherwise empty.

I read this as a small piece of interface criticism wearing a meme’s clothes. The banner is the promise; the circular image is the evidence. The gap between them is where the humor lives, and it is also where a real design problem lives. A motion alert that fires on a cat is technically correct and practically useless. The shirt does not argue that; it just shows the two halves side by side and lets you notice.

What the artwork actually shows

To be precise about the object rather than the idea: the design is a two-part composition. The upper element is a notification card — white, rounded corners, a bell glyph at the left, the sentence set in a single line. The lower element is a circular inset, tinted green the way cheap doorbell feeds often look under porch lighting, showing an orange tabby’s face very close to the camera with siding and a light behind it. The cat’s eyes are wide. The framing is tight enough that the animal reads as a face filling the lens, not a body in a yard.

I am describing what is printed, not what the product listing says about it. The listing title calls it a funny cat doorbell meme; the visual observation is the banner-plus-fisheye composition above. Those are consistent, but the printed wording and the printed image are the things I can actually point at. The rest — how it wears, how it sells, who buys it — I have no evidence for and will not invent.

The shirt itself is listed as a standard t-shirt under the Quirky Cotton Collective brand, and the exact listing is B0HLWFQYL8 on Amazon. If you want the object, that is the object.

The alert as a genre of sentence

Motion alerts belong to a family of messages that are deliberately thin. They are designed to be true under almost any condition and useful under only some. There is motion at your front door will be correct whether the motion is a delivery, a raccoon, a gust of wind moving a hanging plant, or a cat pressing its nose against the housing. The sentence is not lying. It is under-specified by construction, because the system generating it does not know what the motion is and is not going to guess.

That is a reasonable engineering choice. A camera that tried to classify every event before notifying you would either be wrong often or slow often. The thin sentence plus the image is the compromise: the text tells you something happened, the picture tells you what. The shirt reproduces that compromise faithfully, which is why it works as a joke. The banner is doing its job. The image is doing its job. The result is still absurd, because the thing that happened was a cat.

I think the design is funnier than a caption would be precisely because it withholds the editorial voice. There is no oops, just the cat again line. The banner and the fisheye are presented as the system presented them, and the viewer supplies the reaction. That restraint is what separates the shirt from a generic pet-humor graphic.

Why the fisheye matters

The circular crop is not decorative. Doorbell cameras use wide-angle lenses, and the resulting image is distorted at the edges — straight siding lines bow, faces near the lens balloon. The artwork leans into that. The cat’s head is disproportionately large relative to the porch behind it, which is exactly what a wide-angle lens does to something close to the glass. The green tint reads as low-light sensor noise or porch-lamp color cast, the kind of thing you see in real feeds at night.

None of that is a technical claim about any specific camera. It is a visual observation about the printed design: the artist chose a circular crop, a green cast, and a close, distorted subject, and those choices are what make the image legible as a doorbell view rather than a portrait of a cat. Strip the fisheye and the tint and you have a cat photo. Keep them and you have a notification.

That is the part I find worth looking at. The joke depends on the viewer recognizing the visual grammar of a consumer security device — the round crop, the tint, the banner — and then seeing that grammar applied to something that poses no threat at all. The humor is not cats are funny. It is the apparatus of vigilance has been triggered by a cat, and the apparatus is not wrong.

The difference between a slogan and a usable promise

This is where the shirt connects to something I think about in my day job, though I want to be careful not to overclaim the connection. A notification is a promise that the recipient will learn something relevant. There is motion at your front door keeps the letter of that promise and breaks the spirit of it, because motion is not the same as relevance. The system promised to tell you when something happened. It did not promise to tell you when something mattered, and the gap between those two is where every alert-fatigue problem lives.

I am not going to pretend the shirt is making an argument about alert design. It is a meme. But the meme works because the underlying situation is recognizable: a system that reports accurately and still leaves you no better informed. Anyone who has tuned a monitoring threshold, a log filter, or a notification rule knows the feeling. The cat is the reductio.

The design’s restraint is what makes the point land. A shirt that said my doorbell camera is too sensitive would be a complaint. A shirt that shows the banner and the cat is an observation. The observation is funnier and, I think, more durable, because it does not tell you what to conclude.

What I would not claim

I have not worn this shirt, washed it, or tested how the print holds up. I have not surveyed buyers or measured demand. The keyword data I have shows a reported range for the query there is motion at your front door shirt and related variants, but I am not going to dress that up as proof of popularity or as a prediction. The listing is live; the artwork is as described; the rest is inference.

I also would not claim the shirt originates the phrase or the meme. The wording is a common doorbell-alert sentence, and the cat-in-fisheye image is a familiar visual joke. What is specific here is the composition: the banner above, the circular view below, the orange tabby, the green tint, the porch behind. That is the object I am reading.

Verify this yourself

If you want to check my reading against the actual design, open the listing at amazon.com/dp/B0HLWFQYL8 and look at the product images. Confirm four things: (1) the banner is white and rounded with a bell glyph; (2) the sentence reads There is motion at your front door; (3) the inset is circular and green-tinted; (4) the subject is an orange tabby close to the lens with porch siding and a light behind it. If any of those differ from what I described, my reading is wrong about the object and you should trust the image over the paragraph.

For the interface point, the check is conceptual rather than technical: find any notification you receive regularly that is true and uninformative, and notice how quickly you stop reading it. That is the same gap the shirt is drawing, just without the cat.

Disclosure: This publication and Quirky Cotton Collective share an owner, so this is not an independent review.

The Two Meanings of Rooting: Reading the ‘Let’s Root For Each Other’ Shirt

The artwork is a closed loop of text. LET’S ROOT FOR EACH OTHER AND WATCH EACH OTHER GROW runs around the perimeter, and inside that frame sit four root vegetables — a carrot, a radish, a beet, and an onion — each with a smiling face and each with its roots drawn down into a band of soil. The pun is doing two jobs at once, and the shirt is more interesting when you separate them.

The first job is the obvious one. “Root for” means to support, to cheer, to want someone else to succeed. The second job is agricultural: a root is the part of the plant that anchors it and draws up water and nutrients. The design puts the two meanings in the same sentence and lets the vegetables carry the visual weight. That is a clean piece of copywriting, and the drawing is literal about it — the roots are visible, not stylized away, and the soil line is drawn so you can see where the edible part ends and the anchoring part begins.

What I keep returning to is the second half of the sentence: and watch each other grow. Support is one thing. Watching is another. The shirt pairs them, and the pairing is where the design gets a little more pointed than a generic encouragement slogan.

Support is not the same as surveillance

In a work culture, “rooting for each other” is usually offered as a soft counterweight to competition. It sounds generous. But the sentence does not stop at rooting. It adds watch, and watch is a verb with two faces. You can watch a garden grow with affection and patience. You can also watch a colleague’s output, commit history, or ticket velocity with something closer to monitoring. The shirt does not resolve that ambiguity. It just puts both words in the same line and lets the reader decide which one they are being offered.

I read the vegetables as the argument. A carrot does not grow because someone is watching it. It grows because the soil, water, and light are right. The smiling faces are decorative, but the roots are the actual mechanism, and the roots are underground where nobody is watching. That is a useful corrective to the watch each other grow half of the slogan. The growth happens out of sight. The watching is optional. The rooting — the support — is the part that changes the conditions.

This is not a claim about horticulture or about management science. It is a reading of the drawing. The design chose to show roots in soil rather than, say, flowers in bloom, and that choice tilts the sentence toward the underground, unglamorous, slow part of growth. A shirt that showed four blooming plants would be making a different argument. This one shows the part you are not supposed to stare at.

The closed loop and the missing hierarchy

The text wraps around the vegetables rather than sitting above or below them. There is no top line and bottom line, no slogan-then-illustration hierarchy. The sentence is a frame, and the vegetables are inside it. Visually, that makes the mutual part of each other literal: the words enclose all four vegetables equally, and no single vegetable is centered or elevated. The carrot is not the leader. The onion is not the manager. They are arranged as peers inside a shared boundary.

That is a small design decision with a real consequence. A lot of team-culture slogans are printed as a headline with a mascot underneath, which quietly reinstates a hierarchy: the words are the message, the character is the decoration. Here the words and the characters occupy the same space, and the frame is the message. The boundary is the point. Everyone is inside it, and the sentence is what holds them there.

I have written before about boundary statements — the caution triangle, the lowercase meh., the dashed circle. This shirt belongs to that family, but it is the optimistic version. The boundary is not a warning; it is a container for mutual obligation. The sentence says: we are in this together, and the togetherness has a shape. The shape is a rectangle of text around four smiling roots.

What the shirt does not promise

The sentence is careful in a way that slogans often are not. It does not say we will all succeed. It does not say growth is guaranteed. It says root for each other and watch each other grow. The growth is presented as something that happens, not something that is delivered. That is a more honest promise than most work-culture merchandise makes, and it is the reason the shirt works as an off-duty object rather than a corporate handout.

It also does not specify the direction of growth. A beet grows down and out. An onion grows in layers. A carrot grows long and thin. The four vegetables are not growing toward the same shape, and the design does not pretend they are. Mutual support, in this reading, is not uniformity. It is the agreement to root for whatever shape the other thing turns out to be.

That is the argument I would make for the shirt if someone asked me why I noticed it. It is a pun, and the pun is good. But underneath the pun is a distinction between support and surveillance, between the visible part and the root, between a slogan and a usable promise. The drawing makes that distinction without stating it. The roots are underground. The watching is optional. The rooting is the part that matters.

The object itself

The shirt is sold as the Let’s Root For Each Other And Watch Each Other Grow Garden design from Quirky Cotton Collective. The printed artwork is the text and the four root vegetables described above; the retail listing is the source for the wording and the visual observation, not for any claim about how the shirt wears or who has bought it. I have not tested it, and I am not making a durability or comfort claim. What I can say is that the design is legible as a piece of visual argument, and the argument is more interesting than the pun alone.

Disclosure: this publication and Quirky Cotton Collective share an owner. This is not an independent review.

Verify this yourself

Open the listing and look at the artwork at full size. Count the vegetables. Note which parts are above the soil line and which are below. Read the sentence as two clauses and ask which clause the drawing emphasizes. The roots are the evidence. The rest is interpretation, and you are free to disagree with mine.

The Element-Tile Pun on ‘I Wear This Shirt Periodically’

Editorial note: This publication and Quirky Cotton Collective share an owner.

The shirt reads I WEAR THIS SHIRT PERIODICALLY, but the word periodically is not spelled out. It is assembled from four periodic-table-style tiles: 53 I, 74 W, 22 Ti, 16 S. The tile symbols are I, W, Ti, and S. Read as a sequence, they give I W Ti S — not a literal spelling of the sentence, but a visual approximation of periodically built from element symbols.

That mismatch is the joke. The design does not ask you to read the tiles as letters. It asks you to recognize the periodic-table format, map each tile to its element symbol, and then hear the word those symbols almost spell. The pun works because the reader supplies the missing vowels and the final -ally sound. The shirt is not a spelling lesson; it is a small decoding task.

The tile numbers matter. 53 is iodine, 74 is tungsten, 22 is titanium, 16 is sulfur. Those are real atomic numbers and real element symbols. The design uses them correctly. That correctness is what makes the visual joke legible to anyone who has spent time with a periodic table. If the numbers were wrong, the shirt would still be a shirt, but the chemistry reference would collapse into decoration. Here, the reference holds.

The phrase I wear this shirt periodically is a double meaning. In ordinary English, periodically means occasionally or at intervals. In chemistry, periodic points to the periodic table and the repeating patterns of elemental properties. The shirt collapses both meanings into one word. The visual arrangement — element tiles instead of plain letters — makes the second meaning visible. The sentence remains a sentence about wearing a shirt, but the word periodically now also points to the table that organizes the elements.

This is a diagram joke, not a chemistry lesson. The tiles are arranged to resemble the periodic table’s visual language: atomic number, symbol, maybe a name or atomic weight. The design does not claim that iodine, tungsten, titanium, and sulfur form a compound. It does not claim that the shirt has chemical properties. It uses the table’s format as a visual grammar for a pun. That is a modest but specific achievement: the artwork is readable only if you know what a periodic-table tile looks like and can map symbols to sounds.

For technical readers, the appeal is familiar. It is the same pleasure as reading a protocol diagram where the labels are not quite the words you expected, but the structure tells you what to do. The shirt does not explain itself. It assumes a reader who can parse a compact visual notation and tolerate a small ambiguity. The reward is not information; it is recognition. You either see I W Ti S and hear periodically, or you see four random element tiles and wonder why iodine is next to tungsten.

The design also depends on the phrase being common enough to recognize. I wear this shirt periodically is a familiar sentence pattern — a self-referential statement about the shirt itself. The humor is not in the sentence alone; it is in the mismatch between the sentence and the tiles. The sentence says periodically. The tiles say I W Ti S. The reader has to reconcile them. That reconciliation is the entire joke.

If you are looking for the shirt, the listing is here: I Wear This Shirt Periodically Funny Chemistry Science Pun. The design is what it is: four element tiles, one word, one pun. It does not need a backstory. It needs a reader who enjoys a small visual puzzle and does not mind that the puzzle does not spell the word exactly.

That is the useful argument of the artwork: a slogan becomes a diagram, and the diagram becomes a test of whether you can read the table’s notation as a kind of shorthand. The shirt is not making a scientific claim. It is making a visual one. The tiles are correct. The spelling is approximate. The joke is in the gap.

The Smallest Possible Boundary: Reading the Lowercase ‘meh.’ Shirt

There is a period at the end of the word on this shirt. That is the first thing I noticed, and it is the thing I keep coming back to. The native garment preview for the Meh Funny Sarcastic Introvert Minimalist Saying shirt shows very small, centered lowercase lettering — meh. — on a dark shirt. No animal illustration. No pride variant. No decorative frame. Just four characters and a full stop, set small enough that you have to be within a few feet to read them.

I want to be careful about what that observation does and does not support. It is a visual reading of a product preview, not a claim about typographic history, not a claim about what the designer intended, and not evidence that the shirt performs any function. What it does give me is a concrete thing to think about: the difference between a slogan and a boundary.

Most slogan shirts are declarative. They announce a preference, a fandom, a politics, a joke with a setup and a punchline. The grammar is usually first-person and present-tense: I am this, I do this, I hate that. The shirt does the work of speaking for the wearer. Even a sarcastic shirt usually has a target and a tone — it wants you to laugh, or wince, or nod.

meh. does something different. It is not a statement of identity. It is a statement of sufficiency. It says: this is the level of enthusiasm available, and it is not zero, and it is not more. The period matters because it closes the sentence. Without it, meh is a noise, a shrug, an open-ended non-answer. With it, the word becomes a complete utterance. It is not trailing off. It has decided.

That is a boundary, and boundaries are hard to write. In engineering teams, the hardest messages to send are the ones that say this is enough without saying this is bad. A code review that says “this is fine” is not the same as one that says “this is good.” A design doc that says “we can ship this” is not the same as one that says “this is the right architecture.” The vocabulary for adequate is thin, and it tends to collapse into either praise or complaint. meh. is a rare attempt at a third position.

I do not know whether the designer was thinking about any of this. I am reading the artwork, not the artist. But the reading is available, and it is more interesting than the usual introvert-shirt framing. The retail title includes the words Introvert and Minimalist, and those are accurate enough as descriptions of the visual style. The shirt is minimal. It is also, in a small way, about the difficulty of expressing low-stakes disinterest without either overstating it or apologizing for it.

There is a version of this shirt that would have been louder. It could have included a cartoon face, a speech bubble, a list of things the wearer does not want to do. It could have used a distressed font or an ironic retro palette. It could have been a meh that was actually a wow in disguise — a joke about how much the wearer cares about not caring. The observed design does not do that. The lettering is small, centered, lowercase, and punctuated. It is not performing indifference. It is stating it.

That distinction matters to me because I spend a lot of time reading technical claims, and the same problem shows up there. A vulnerability report that says “this is bad” is easy to write and hard to act on. A report that says “under these preconditions, with this adversary model, the impact is this” is harder to write and much more useful. The second kind of writing is a boundary. It says: here is what I know, here is what I do not know, and here is where the line is. meh. is not a vulnerability report. But it is the same kind of move at a much smaller scale: it refuses to overclaim.

I should note the obvious: a shirt is not a protocol, and reading one as if it were would be a category error. The artwork does not demonstrate anything about software, security, or engineering practice. It is a piece of clothing with a word on it. The reason I am writing about it at all is that the word is doing something slightly more precise than the genre usually allows, and that precision is worth noticing.

If you want to look at the object itself, the listing is here: Meh Funny Sarcastic Introvert Minimalist Saying. The design is available on a standard t-shirt, and the preview shows the same small centered lowercase treatment. I have not worn it, tested it, or received any customer feedback about it. I am describing what the preview shows and what I make of it.

Editorial note: This publication and Quirky Cotton Collective share an owner. This is not an independent review.

What I keep returning to is the period. A period is a small thing. It is also the difference between a mood and a decision. meh is a mood. meh. is a decision — a low-energy, low-stakes decision, but a decision nonetheless. It says: I have considered the matter, and this is where I land. Not enthusiastic. Not hostile. Just done.

That is a useful thing to be able to say, and a hard thing to say well. Most of us either over-explain our indifference or dress it up as something more dramatic. The shirt does neither. It puts the smallest possible mark on the smallest possible word and lets it stand. I do not know if that was the intent. But it is what the artwork shows, and it is enough to think about.

The Dashed Circle and the Solid Ball: Reading the Physics of ‘I Had Potential’

On the shirt, in white capitals, the words I HAD POTENTIAL sit above a curved ramp that descends from an upper-left ledge to a lower-right flat. A dashed, empty circle rests on the upper ledge. A solid white ball sits on the lower flat. The ramp is curved, not a straight diagonal. That is the whole graphic. The joke depends on reading those two circles as the same object at two moments in time, and on noticing that the word potential is doing double duty: the physics term for stored energy, and the ordinary word for what a person might have become.

I want to take the drawing seriously for a minute, because the more I look at it, the more the diagram resists the slogan it is attached to. The dashed circle is not a ball that failed. It is a ball that has not yet been placed. The solid ball is not a person who wasted something. It is a body at rest on a flat surface. The shirt asks you to supply the narrative that connects them, and the narrative it invites is a fall. But the drawing does not actually show a fall. It shows a starting position and an ending position, with the ramp between them left unpopulated. The motion is implied, not depicted. That gap is where the joke lives, and it is also where the design gets more interesting than the punchline.

In mechanics, gravitational potential energy depends on height above a reference level. A ball on a high ledge has more of it than a ball on a low flat. If the ball rolls down the curved ramp, that potential converts into kinetic energy, and friction takes some of it as heat. By the time the ball reaches the lower ledge, the stored energy is gone. The dashed circle at the top is the ball before the conversion; the solid ball at the bottom is the ball after. The shirt is a before-and-after diagram with the middle omitted. The dashed outline is a nice touch because it reads simultaneously as not yet there and no longer there — a placeholder for a state that the drawing refuses to commit to.

That ambiguity is what makes the design work as a piece of visual language rather than just a caption. A straight diagonal ramp would have made the fall obvious and the joke flatter. The curve matters. A curved ramp changes how the ball would accelerate; it also looks more like a slide, which pushes the image toward childhood and playgrounds rather than laboratories. The dashed circle and the solid ball are the same size, which reinforces the reading that they are the same object. If the solid ball were larger or smaller, the diagram would imply growth or shrinkage, and the joke would change. The proportions are doing quiet work.

The phrase I had potential is a common enough construction that it functions as a meme template: you can put almost any noun after I had and get a recognizable shape of self-deprecation. What the physics framing adds is a specific kind of nerd humor — the pleasure of recognizing that a word with a technical meaning has been borrowed for an emotional one. The shirt does not explain the pun. It does not need to. If you know what potential energy is, the diagram reads one way; if you only know the ordinary sense of the word, it still reads as a joke about wasted promise. The design is legible at both levels, which is harder to pull off than it looks.

I am not going to claim the shirt is a commentary on burnout, late capitalism, or the sunk-cost fallacy. It is a t-shirt. But the reason it lands, I think, is that it treats a personal disappointment as a closed physical system. The ball does not choose to roll. The ramp does not judge. The dashed circle does not mourn. The diagram is neutral, and the sadness is entirely in the words. That mismatch — flat mechanical description plus first-person regret — is the actual joke, and it is a durable one because it does not depend on a particular year or platform.

If you want the object itself, the listing is here: I Had Potential Funny Physics Pun Sarcastic Minimalist Quote. The design is white-on-dark, minimalist, and the retail title calls it a physics pun. The visual observation above is the basis for everything I have said about the artwork; the interpretation of the dashed circle and the solid ball as a before-and-after pair is mine, not a claim about the designer’s intent.

Editorial note: This publication and Quirky Cotton Collective share an owner.

Verify this yourself

Open the listing and look at the garment image at full size. Confirm four things: (1) the text is I HAD POTENTIAL in capitals; (2) the ramp is curved, not a straight diagonal; (3) the upper-left circle is dashed and empty; (4) the lower-right ball is solid and rests on a flat ledge. If those four observations hold, the reading above is reproducible from the image alone. If the ramp is straight or the upper circle is solid, the argument changes.

The Caution Triangle as a Boundary Statement: Reading the ‘Not Friendly Do Not Touch’ Shirt

Editorial note: This publication and Quirky Cotton Collective share an owner.

The shirt prints three elements: the words NOT FRIENDLY and DO NOT TOUCH in warning-sign lettering, a yellow caution triangle, and a crossed-out hand symbol. That is the whole design. No mascot, no punchline, no second panel. The restraint is the point. A warning sign is a compressed contract: it tells you what will happen, what you must not do, and what it will cost you to ignore it — all before you have time to argue. Most slogan shirts skip the contract and go straight to the attitude. This one borrows the visual grammar of a hazard placard and applies it to a person.

I keep coming back to the crossed-out hand. In industrial signage, a prohibition symbol is not decoration; it is a negative instruction with a defined scope. The diagonal bar does not mean “be careful.” It means “this action is disallowed.” Pairing that with a caution triangle is technically redundant — you have two warning conventions stacked — and that redundancy is what makes the design legible at a glance. The triangle says hazard. The crossed hand says the hazard is you, if you reach for me. The text removes any ambiguity the symbols might leave.

What I find interesting is the choice to use public sign language for a private boundary. Warning placards exist because strangers cannot be trusted to infer risk from context. They are designed for people who have no relationship with the thing being protected. That is exactly the situation the shirt addresses: a person in public, surrounded by people who have no context for their mood, their energy, or their willingness to chat. The design does not ask you to read the wearer. It reads itself.

There is a real difference between a slogan and a usable promise, and this design sits on the line. A slogan is a mood. A promise is a specification. “Not friendly” is a mood claim — it describes a disposition, and dispositions are arguable. “Do not touch” is closer to a specification: it names an action, forbids it, and implies a consequence. The caution triangle is the part that makes it a promise rather than a preference. It says the wearer has thought about what happens when the instruction is ignored, and has decided the warning is worth printing.

I would not read this as a claim about introversion, despite the listing title. Introversion is about where energy comes from; this design is about access control. The two overlap in practice — plenty of introverts would wear it — but the shirt is not making a psychological argument. It is making a boundary argument. The distinction matters because boundaries are enforceable and personalities are not. You can point at a warning sign. You cannot point at a temperament.

For readers who spend their working lives writing specifications, the design has an accidental professional resonance. A good spec is terse, uses established notation, and does not rely on the reader’s goodwill. This shirt does all three. It also shares a failure mode with bad specs: it assumes the reader will respect the notation. A crossed-out hand only works if the person reaching for you recognizes the symbol as a prohibition rather than a challenge. The design cannot solve that. No sign can. It can only make the boundary explicit enough that ignoring it becomes a choice rather than an accident.

That is the useful argument here. The shirt is not funny because it is rude. It is funny because it is formal — because it applies the register of workplace safety to the register of personal space, and the mismatch exposes how rarely we state our boundaries in language anyone else can parse. Most of us mumble. This one posts a placard.

The design is available on a standard t-shirt from Quirky Cotton Collective. I am describing the artwork as observed, not a wearing experience. What I can say is that the visual logic holds up: three elements, one instruction, no wasted pixels. Whether that instruction survives contact with a crowded room is a question the shirt cannot answer for you.

Why ‘After First Unlock’ Is the Real Forensic Boundary: What an AFU-State iPhone Yields for Signal, WhatsApp, and Telegram Databases

The phrase “After First Unlock” gets used in forensic discussions as if it were a single switch: the phone is locked, but the keybag is open, so everything is readable. Apple’s own documentation describes something narrower. Data Protection assigns each file to a class, and “accessibility is determined according to whether the class keys have been unlocked” (Apple Platform Security, Data Protection overview). AFU is a state of the keybag. It is not a property of an app, and it is not a blanket grant over the data volume.

That distinction matters for anyone reasoning about what an AFU-state iPhone yields for Signal, WhatsApp, or Telegram message stores. The useful unit of analysis is the file’s Data Protection class and whether that class key is resident in the keybag at the moment of acquisition. The protocol specifications for these apps tell us what key material the designs permit to exist on disk. They do not tell us what a shipped iOS binary persists, or in which class. Conflating the two is the most common error in this area.

What Data Protection actually does per file

Apple’s Data Protection overview describes the mechanism directly. Every time a file is created on the data volume, Data Protection generates a new 256-bit per-file key and hands it to the hardware AES engine, which encrypts the file as it is written to flash. On A14 through A18 and M1 or later devices, the encryption uses AES-256 in XTS mode, with the per-file key run through a KDF (NIST SP 800-108) to derive a 256-bit tweak value and a 256-bit cipher key. On A9 through A13 and S5 or later, the encryption uses AES-128 in XTS mode, with the 256-bit per-file key split into a 128-bit value and a 128-bit cipher key.

The per-file key is not stored in the clear. It is wrapped by a class key, and the class key is what the keybag holds. When the device is in a given lock state, some class keys are loaded and some are not. A file whose class key is loaded can be decrypted by a process with the right entitlements. A file whose class key is not loaded cannot, regardless of which app wrote it.

This is why “AFU” is not a forensic boundary in the sense of a single line that, once crossed, exposes everything. It is a state in which a specific subset of class keys is available. The boundary is per class, and therefore per file.

Why the class, not the app, is the right unit

Two apps can both store SQLite databases in the same container directory and still have different forensic exposure in AFU state, because the class attribute is set per file (and, on APFS, can be subdivided per extent). Conversely, two files from the same app can have different exposure if the app assigns them to different classes. The app identity is not the variable that determines accessibility. The class is.

This has a practical consequence for how a forensic analysis should be framed. The question is not “does AFU expose Signal?” or “does AFU expose Telegram?” The question is: for each file that contains message content or key material, what is its Data Protection class, and is that class key resident in the keybag in the state the device was acquired in?

Apple’s Data Protection overview retrieved here describes the key hierarchy and the per-file mechanism. It does not reproduce the class table itself. The class definitions (A, B, C, D, and the “Complete Until First User Authentication” class) are documented on Apple’s separate Data Protection classes page, and any claim about which class a specific file belongs to should be checked against that page and against the file’s actual attributes on the device, not inferred from the overview.

What the protocol specs tell us about on-disk key material

The Signal specifications are design documents. They describe what the protocol permits, not what the shipped iOS binary does. With that caveat, they are still useful, because they define the key material that can exist at rest.

X3DH establishes a shared secret key between two parties who mutually authenticate each other based on public keys, and provides forward secrecy and cryptographic deniability (Signal X3DH specification). The spec states that Bob deletes any one-time prekey private key that was used, for forward secrecy. That is a deletion instruction in the design. Whether a given implementation actually deletes it, and when, is a separate question that requires inspecting the binary or the on-disk state.

The Double Ratchet derives new keys for every message so that earlier keys cannot be calculated from later ones, and mixes Diffie-Hellman outputs into derived keys so later keys cannot be calculated from earlier ones (Signal Double Ratchet specification). The spec also states that message keys may be stored without affecting the security of other message keys, which is useful for handling lost or out-of-order messages. It defines a MKSKIPPED state variable as a dictionary of skipped-over message keys indexed by ratchet public key and message number.

Read together, these specs tell us that a conforming implementation may have skipped message keys on disk at any given time, and that it is supposed to delete one-time prekey private keys after use. They do not tell us the Data Protection class of the file that holds the ratchet state, or whether the implementation stores skipped keys in memory only. Those are implementation facts, and they require implementation evidence.

WhatsApp and Telegram: what the retrieved sources do and do not support

WhatsApp’s public security page retrieved here is a user-facing safety page. It covers two-step verification, avoiding fake clients, group controls, and scam awareness. It does not describe the on-device database format, its encryption at rest, or its Data Protection class. Any claim that WhatsApp’s iOS message store is or is not encrypted at rest, or belongs to a particular class, is not supported by this source and should not be made from it.

Telegram’s MTProto page is explicit about its scope: it “deals with the basic layer of MTProto encryption used for Cloud chats (server-client encryption)” and points to a separate page for Secret Chats end-to-end encryption (Telegram MTProto documentation). The same page states that as of version 4.6, major Telegram clients are using MTProto 2.0, and that MTProto v1.0 is deprecated and being phased out. None of this describes the local storage format or the Data Protection class of any Telegram database on iOS.

The practical implication is that a forensic analysis of “Telegram databases” has to distinguish which store is being examined. Cloud chats and Secret Chats follow different cryptographic paths, and the MTProto page does not describe either one’s on-disk representation. The same discipline applies to WhatsApp: the user-facing security page is not a source for local storage claims.

A reproducible method for the class question

The following is a method, not a result. It does not assert what any specific app does. It is a procedure for answering the class question for a given file on a given device.

  1. Identify the on-disk path of the message store or key material you care about. For a given app, this is an implementation fact that must be established from the app’s container layout, not assumed.
  2. Read the file’s Data Protection class attribute. On iOS, this is exposed through the file’s protection class metadata; the exact tooling depends on whether you are working from a full file system image or a logical acquisition.
  3. Determine whether the class key for that class is resident in the keybag in the device state you acquired. This is the step that “AFU” is shorthand for, and it is the step that determines whether the file is decryptable.
  4. If the class key is resident, the file is decryptable by a process with the appropriate entitlements. If it is not, the file is not, regardless of the app that wrote it.

Step 3 is where the popular framing breaks down. “AFU” does not mean all class keys are resident. It means the keybag is in a state where some class keys are loaded. Which ones depends on the class definitions and on the device’s configuration.

A labeled hypothetical, not a finding

Suppose an app stores its session keys in a file assigned to the “Complete Until First User Authentication” class. In AFU state, a process with the right entitlements could read those keys. That is a reasoning aid about how class-key logic works. It is not a finding about any app, and it should not be cited as one. The retrieved sources do not establish the Data Protection class of any specific app’s message store or key material.

The same logic applies in the other direction. Suppose an app stores its message database in a class whose key is not loaded in AFU state. Then the database is not readable in that state, even though the device is “after first unlock.” The class attribute, not the lock-state label, is what determines the outcome.

What Apple says about locked-device extraction

Apple’s US law enforcement guidelines include a section titled “Extracting Data from Passcode Locked iOS Devices” in the index of information available from Apple (Apple Legal Process Guidelines, October 2025). The retrieved excerpt contains the section title but not its body. The title alone does not establish what Apple says it can or cannot extract, and no technical capability should be attributed to that section without reading its full text.

The same guidelines state that, for requests from US government and law enforcement agencies for content, absent emergency circumstances, Apple will only provide content in response to a search warrant issued upon a showing of probable cause, or customer consent. That is a statement about Apple’s response to legal process, not about what a forensic tool can extract from a device in AFU state. The two are separate questions and should be kept separate.

Why this reframing is useful

The popular framing treats AFU as a binary: locked or effectively unlocked. The Apple source describes a per-file class system in which accessibility depends on whether the class key has been unlocked. The reframing is not pedantic. It changes what evidence is needed to support a claim.

Under the binary framing, a claim like “AFU yields the Signal database” sounds like a single fact about a device state. Under the class framing, it decomposes into at least three separate claims: the database’s path, its Data Protection class, and whether that class key is resident in AFU state. Each of those requires its own evidence. The protocol specs can support claims about what key material the design permits on disk. They cannot support claims about the class attribute of a shipped binary’s files.

This is also why the boundary is real but narrower than the slogan suggests. AFU does expose a meaningful set of files, and for some apps that set may include message content or key material. But the exposure is determined by the class assignment, and the class assignment is an implementation fact that has to be measured, not assumed from the lock-state label.

FAQ

Does AFU mean the device is effectively unlocked for forensics?

No. AFU is a keybag state in which some class keys are loaded. Apple’s Data Protection overview states that accessibility is determined by whether the class keys have been unlocked. Which class keys are loaded in AFU state depends on the class definitions and the device configuration, not on a blanket rule.

Can I determine from the X3DH or Double Ratchet specs whether Signal’s iOS database is readable in AFU state?

No. Those specs describe protocol design, including what key material may exist at rest (for example, skipped message keys in the MKSKIPPED state variable, and the instruction to delete used one-time prekey private keys). They do not describe the Data Protection class of any file in a shipped iOS binary. That requires implementation evidence.

Does Telegram’s MTProto page describe the on-device database?

No. The page states it deals with the basic layer of MTProto encryption used for Cloud chats (server-client encryption) and points to a separate page for Secret Chats end-to-end encryption. It does not describe local storage format or Data Protection class.

What is the minimum evidence needed to claim a specific app’s message store is readable in AFU state?

At least: the on-disk path of the store, its Data Protection class attribute, and confirmation that the corresponding class key is resident in the keybag in the acquired state. The protocol specs alone are not sufficient.

Does Apple’s law enforcement guidelines section on locked-device extraction establish a technical capability?

The retrieved excerpt contains only the section title. The title alone does not establish what Apple says it can or cannot extract. The full text of that section would be needed to make any claim about its contents.

What to measure next

If the goal is to answer the class question for a specific app, the next steps are concrete. Retrieve Apple’s Data Protection classes page and quote the class definitions verbatim rather than paraphrasing them. Read the full text of Apple’s “Extracting Data from Passcode Locked iOS Devices” section. Establish, from a reproducible teardown or from Apple developer documentation, the Data Protection class attribute of the specific files in question. Until those steps are done, the honest position is that the protocol specs tell us what key material may exist, and the class question remains open.

That is a less satisfying answer than “AFU means everything is readable,” but it is the one the sources support. The forensic boundary is the class key, and the class key is a per-file fact. Measuring it is the work.

What Lives in Telegram Desktop’s tdata Folder: Session Hijacking by File Copy and Why Cloud Chats Follow the Session

Telegram Desktop stores its account state in a directory called tdata. The name is unremarkable, but the contents are not: the folder holds the authorization key that identifies your account to Telegram’s servers, the local message cache, and the session metadata that lets the client resume without re-authenticating. If an adversary can copy that directory and run the client against it, the server treats the copy as the same authorized session. This article walks through what is actually in tdata, how the local passcode interacts with it, and why cloud chats follow the session rather than the device.

What the client writes to disk

The Telegram Desktop source tree is public under GPLv3 with an OpenSSL exception (telegramdesktop/tdesktop). The storage layer is the authoritative description of what lands in tdata. In Telegram/SourceFiles/storage/storage_account.cpp, the base path is constructed as cWorkingDir() + u"tdata/", and per-account data is placed under a subdirectory derived from an MD5 hash of the account’s data name (storage_account.cpp).

Two files matter for session continuity:

  • map — read by Account::readMapWith. It contains a salt, an encrypted copy of the local authorization key, and an encrypted descriptor of the account’s local state (drafts, sticker keys, peer maps, and similar). The function signature is readMapWith(MTP::AuthKeyPtr localKey, const QByteArray &legacyPasscode), which tells you the two ways the file can be opened: with a key already in memory, or with a passcode that decrypts the stored key.
  • Per-account directories under tdata/ — keyed by the MD5 of the data name, holding the encrypted local cache and settings files whose names are derived from FileKey values (for example map0, map1, maps, configs, and per-feature keys such as lskDrafts, lskUserSettings, lskTrustedPeers).

The authorization key itself is an MTP::AuthKey. It is the credential the client presents to Telegram’s servers. In MTProto terms, the server identifies a session by a 64-bit key identifier that “uniquely identifies an authorization key for the server as well as the user” (core.telegram.org/mtproto). That is the object sitting inside map.

How the local passcode fits in

The passcode is not a server-side authentication factor. It is a local encryption layer over the key material in map. The relevant code path is visible in readMapWith: when no localKey is supplied, the client reads legacySalt and legacyKeyEncrypted from the map file, derives a key with CreateLegacyLocalKey(legacyPasscode, legacySalt), and attempts to decrypt the stored authorization key. If decryption fails, the function returns ReadMapResult::IncorrectPasscode.

Two consequences follow directly from that code:

  1. Without the passcode, an attacker who copies tdata cannot recover the authorization key from map by reading the file. The key is encrypted under a key derived from the passcode and the stored salt.
  2. With the passcode — or with the key already loaded in memory on a running, unlocked client — the same file yields the authorization key. The passcode is a gate on the file, not a second factor against the server.

This is the distinction that matters for threat modeling. A passcode raises the cost of offline extraction from a copied folder. It does not change what the server accepts as proof of identity. The server accepts the authorization key.

Why copying tdata can hijack the session

MTProto’s session model is explicit about this. From the protocol documentation: “the session is attached to the client device (the application, to be more exact) rather than a specific WebSocket/http/https/tcp connection. In addition, each session is attached to a user key ID by which authorization is actually accomplished” (core.telegram.org/mtproto).

Read that carefully. The session is bound to the application instance and to the authorization key — not to a hardware identifier, not to a TLS client certificate, not to a device attestation token. If an attacker obtains a working copy of the authorization key and the session state, and runs a compatible client, the server has no protocol-level reason to distinguish that client from the original.

The required adversary capabilities are concrete:

  • Read access to the tdata directory while the account is logged in. This includes filesystem access on the host, a backup that captured the folder, a synced cloud folder, or a forensic image of the disk.
  • The local passcode, if one is set, or access to the decrypted key material in memory on a running client.
  • The ability to run Telegram Desktop (or a compatible MTProto client) against the copied state on hardware the attacker controls.

Affected versions: this is not a version-specific bug. It is the documented behavior of the storage and session model as implemented in the current dev branch of tdesktop and described in the MTProto documentation. Any version that stores the authorization key in tdata and resumes sessions from it is subject to the same property.

Practical impact: full account access for the lifetime of the authorization key. The attacker can read cloud chats, send messages as the user, and — depending on the account’s settings — manage sessions and other account state. Secret Chats are a separate case discussed below.

Why cloud chats follow the session

Cloud chats are not end-to-end encrypted. The MTProto documentation is direct about the scope: the main protocol page “deals with the basic layer of MTProto encryption used for Cloud chats (server-client encryption)” (core.telegram.org/mtproto). The server holds the plaintext of cloud messages. Client-to-server encryption protects the wire, not the message store.

That design choice is what makes session hijacking by file copy so effective against cloud chats. The messages are not encrypted under a key that only the original device holds. They are encrypted under the session’s transport keys, and the server will re-serve them to any client that presents a valid authorization key. Copy the key, and the history follows.

Secret Chats are different, and the difference is worth stating precisely. Per the end-to-end documentation, Secret Chats use a Diffie-Hellman key exchange and are “associated with specific devices (or rather with authorization keys), not users” (core.telegram.org/api/end-to-end). The same page notes that when a Secret Chat is accepted, “for all of Client B’s authorized devices, except the current one, updateEncryption updates are sent with the constructor encryptedChatDiscarded” — meaning the Secret Chat is bound to one authorization key, and other sessions are explicitly excluded.

So a copied tdata folder gives the attacker the same authorization key. Whether that yields access to a given Secret Chat depends on whether the Secret Chat was established under that key. If it was, the attacker inherits it. If it was established under a different authorization key on a different device, the server has already discarded it for this session. This is a meaningful mitigation, and it is the reason Secret Chats are not simply “cloud chats with extra encryption.”

What the passcode does and does not buy you

A local passcode is worth setting. It converts a copied tdata folder from “usable credential” into “encrypted blob requiring offline work.” The work is not trivial: the attacker needs the passcode or a way to recover the derived key. That is a real increase in cost.

It is not a complete control. Three limits are worth naming:

  • It does not protect a running, unlocked client. If the attacker has code execution or memory access on the host while the client is open, the key is in memory. The passcode gates the file, not the process.
  • It does not revoke the session. The authorization key remains valid on the server until it is explicitly terminated. A passcode does not change that.
  • It does not protect against a backup that captured the folder while the client was unlocked and the key was cached. Depending on the client’s behavior, the decrypted key may be present in memory or in a temporary file at the moment the backup ran.

The constructive alternative is session management. Telegram exposes an active sessions list in the client. Terminating sessions you do not recognize is the only server-side action that invalidates a copied authorization key. If you suspect tdata was copied, terminating the session is the remediation, not changing the passcode.

Verifying the claim yourself

This is a reproducible property, not a rumor. The steps are:

  1. Install Telegram Desktop on a test account. Log in. Confirm the account works.
  2. Close the client fully. Locate the tdata directory (on Linux it is typically under the working directory; on Windows it sits next to the executable or in the user profile, depending on install type).
  3. Copy the entire tdata directory to a second machine.
  4. Install the same or a compatible version of Telegram Desktop on the second machine. Place the copied tdata where the client expects it.
  5. Launch the client. Observe whether it resumes the session without a login prompt.

If a local passcode is set, step 5 will prompt for it. That is the passcode layer doing its job. Remove the passcode on the source, repeat, and the session resumes without a prompt. The server-side session list will show the copied session as active.

This is the same class of property that forensic tooling relies on when extracting messaging state from endpoints. The relevant question for any messenger is not whether the local store is encrypted — it is whether the credential in the local store is sufficient to authenticate to the server. For Telegram Desktop, it is.

Frequently asked questions

Does copying tdata work if the account has two-factor authentication enabled?

Two-factor authentication (the cloud password) is a server-side gate on new logins. It is not a gate on an existing authorization key. A copied tdata folder contains an already-authorized key, so the 2FA prompt does not appear. The 2FA password protects the login step, not the session that already exists.

Does the local passcode encrypt the message cache too?

The passcode gates the authorization key in map. The local cache files under the per-account directory are written by the storage layer; whether they are encrypted under the same key depends on the storage path in use. The safe assumption for threat modeling is that a copied folder with a known passcode yields both the session and the local cache. Treat the passcode as protecting the credential, and treat the cache as data that follows the credential.

Can I detect that my tdata was copied?

Not reliably from the client. The server logs sessions, and the active sessions list in the client shows them. An unfamiliar session entry is the signal. There is no local file-integrity check in the client that would flag a copy.

Is this a vulnerability that Telegram should fix?

It is a design property, not a bug. The authorization key is the credential; the server accepts it. Changing this would require binding sessions to hardware or to a second factor at the protocol level, which has its own trade-offs (device migration, recovery, multi-device use). The honest framing is that the property is documented, reproducible, and mitigable by session management — not that it is a hidden flaw.

What about Secret Chats specifically?

Secret Chats are bound to a single authorization key. A copied tdata folder inherits that key, so a Secret Chat established under it is accessible to the copy. A Secret Chat established under a different device’s key is not, because the server discards it for other sessions. The practical guidance is the same: if you need a conversation that does not follow a copied folder, use a Secret Chat established on the device you trust, and terminate sessions you do not recognize.

What to do with this

The actionable items are short:

  • Set a local passcode. It raises the cost of offline extraction from a copied folder.
  • Review the active sessions list periodically. Terminate anything you do not recognize.
  • Do not treat tdata as a backup artifact. If you back up the folder, treat the backup as a credential — because it is one.
  • For conversations that must not follow a copied folder, use Secret Chats established on the device you control, and understand that the binding is to the authorization key, not to the hardware.

The larger point is about how to read claims in this space. “Encrypted” is not a property of a folder; it is a property of a specific threat model. Telegram Desktop’s tdata is encrypted at rest under a passcode, and the credential inside it is sufficient to authenticate to the server. Both statements are true, and the second one is the one that determines what happens when the folder is copied.