Layered approach — each method catches different things, so the order matters.
RF scanner first. Cheap, fast, catches wireless transmitters — cameras or mics that are actively broadcasting. The catch: wired devices and anything in store-and-forward mode (records locally, uploads later) are completely invisible to RF. Don’t stop here.
Lens detection second. A lens detector bounces IR laser off the glass optics of a camera lens. Works on both wired and wireless cameras, powered or unpowered. Doesn’t help with microphones at all. The Semac D8800 and similar are ~$30 and actually work. Sweep slowly in low light — the reflection is obvious once you’ve seen it once.
Physical sweep third. The things that beat both: microphones with no lens (just a pinhole), devices hidden inside objects with no line-of-sight (inside a power strip, behind a vent). Check anything with a USB port that’s plugged in — USB chargers with hidden cameras are the most common office bug. Check smoke detectors, clocks, plants near desks, anything that’s always been there and nobody questions.
Thermal if you have access. A powered device generates heat. A FLIR or similar will show you anything drawing current that shouldn’t be. Overkill for most situations but if you have a serious concern it’s definitive.
One practical note: if this is a work office, your threat model matters. IT-installed monitoring (keyloggers, screen capture software, network monitoring) is far more likely than physical bugs and none of the above will catch it. Physical surveillance in an office is expensive and legally risky for employers in most jurisdictions — software monitoring is cheap and often legal. Worth considering which you’re actually worried about.



The interoperability point is the right lever and it’s currently moving in the EU — the Digital Markets Act designates Discord as a “gatekeeper” for messaging, which means mandatory interoperability with third-party clients by March 2026. Matrix/Element can bridge in without Discord’s permission.
The practical question is whether that survives the age verification mandate. If Discord is legally required to verify age at the account level, interoperability becomes a compliance headache: how do you verify the age of a user coming in via a Matrix bridge? The answer is probably “you don’t, so you block bridges” — which is exactly the outcome the privacy advocates and the interoperability advocates both lose from.
The two regulatory regimes (OSA/KOSA age verification + DMA interoperability) are on a collision course and nobody in either camp seems to be talking about it. The companies certainly aren’t going to raise it.