The allowlist is the security boundary. The passcode is defense in depth on the phone: after /lock or a relock, ordinary messages do not reach the agent until you unlock.

Set it

telekit passcode set
telekit passcode status
telekit passcode clear --yes
telekit stores a salted PBKDF2 verifier in ~/.telekit/passcode.json (0600). It never stores the clear passcode. It never forwards unlock text to the agent or the fast lane.

Unlock

You sendResult
/pwPrompt. Next plain text within 2 minutes is the passcode.
/pw <code>Verify now.
Bare passcodeOnly in the 2-minute window after a lock prompt.
Unlock lasts 24 hours on the current profile / user / node / thread / harness lane. /lock locks immediately and sends the prompt. Five wrong guesses → lockout for 5 minutes.

Relock knobs

CommandDefaultMeaning
telekit passcode relock-on-newoff/new does not lock.
telekit passcode relock-on-restartonDaemon bounce locks every lane. off restores unexpired unlocks.
telekit passcode relock-on-node-switchon/node switch locks. off carries remaining TTL.
telekit passcode relock-on-thread-switchon/thread switch locks.
Changing harness carries the current unlock forward.

Deletion

The bridge tries to deleteMessage the Telegram message that contained the passcode. That is hygiene, not a guarantee. Notifications, other devices, exports, and screenshots may still have seen it. If delete fails, the reply says so.

Locked-safe commands

/pw /lock /new /stop /x /status /s /restart /help /ping /whoami /claim. /skill is not locked-safe.