Guides
Screen Security
B14 is shipped as an always-on application-shell boundary. It reduces accidental disclosure through screenshots, recordings, app-switcher snapshots, and recent/task previews where the operating system offers a relevant API. It is not DRM and does not change Komms' end-to-end encryption or endpoint-compromise limits.
User promise
Protection starts before the encrypted store opens and cannot be disabled. It is
therefore not a sealed preference, does not enter KKR7, and never creates an
envelope, capability, notification, queue item, peer synchronization, or
transport work. kult-node owns the render-safe capability vocabulary;
RPC/CLI and UniFFI expose it so every shell describes the same promise.
| Platform | Capture prevention | Background/recent preview | Detection | Rapid lock |
|---|---|---|---|---|
| Android | Platform-enforced FLAG_SECURE |
Platform-enforced FLAG_SECURE |
Unavailable | Existing Lock action |
| iOS | Unavailable for universal still screenshots | Privacy shield before inactive/background snapshots | UIKit live-capture notification | Existing Lock action |
| Desktop | Best effort through Tauri native content protection | Best effort plus an inactive-window privacy shield | Unavailable | Ctrl/Cmd+Shift+L |
platform-enforced means Komms enables the supported OS API across its whole
surface. It does not mean a compromised OS, privileged malware, accessibility or
overlay abuse, or an external camera is defeated. best-effort means the request
may be ignored by the operating system, window server, compositor, capture tool,
or desktop environment.
Platform behavior
Android
Every declared activity inherits SecureActivity, which installs
WindowManager.LayoutParams.FLAG_SECURE before AppCompat restores or draws UI.
This includes create/unlock/restore, settings, QR, chat, group, note-to-self,
folder, label, icon, and verification surfaces. Android blocks compliant
screenshots and recordings and supplies a protected recent-task preview. Komms
does not claim a reliable callback for every blocked attempt.
iOS
The root scene starts covered and becomes visible only while active and not
captured. UIApplication.willResignActiveNotification covers content before the
app-switcher snapshot; scene-phase changes provide a second lifecycle signal.
UIScreen.capturedDidChangeNotification covers the whole scene during live
recording or mirroring and removes the cover when capture ends.
iOS does not give applications a universal API to prevent still screenshots. The settings screen says so explicitly. Capture notification may also arrive after recording or mirroring begins; the shield is response and minimization, not a retroactive guarantee.
Desktop
The Tauri window requests native contentProtected behavior both in its checked
configuration and at setup. Support varies by OS and compositor, so this remains
best effort. Focus loss additionally places an opaque privacy shield over the
webview. Ctrl+Shift+L on Linux/Windows or Cmd+Shift+L on macOS immediately
uses the ordinary lock path: recording/review transients are discarded, the node
stops cleanly, session-backed render state is cleared, and the unlock gate
returns. The visible Lock button remains equivalent and documents the shortcut.
Qualification
Automated coverage pins the shared b14-screen-security-parity.json contract in
kult-node, strict RPC/CLI, UniFFI, Android KommsCore, iOS KommsCore, and the
desktop command layer. Platform builds prove native source compatibility. Native
capture and snapshot behavior still requires real OS evidence:
- Android device/emulator: visit every activity from the locked gate and an
unlocked session; verify screenshot and
screenrecordoutput is refused or blank, and recent tasks never contains Komms content. - iOS device/simulator: background from the gate, conversation, attachment review, QR, and settings; verify the app switcher contains only the privacy shield. Start screen recording/mirroring while active and verify the shield appears and clears. Take a still screenshot and verify the documented unsupported state remains truthful.
- Desktop OS/compositor matrix: inspect task/recent previews and native
screenshots on supported macOS, Windows, X11, and Wayland combinations;
record unsupported combinations rather than upgrading the claim. Verify
focus loss covers the webview and
Ctrl/Cmd+Shift+Lreturns to a cleared gate immediately from conversations, modals, and media review.
Release qualification records the OS version, compositor/window server, capture method, expected capability level, actual result, and whether the locked gate contains any prior session content.