Skip to content
C.W.K.
Lesson 03 of 05 · published

The Device Is the Credential

~11 min · device, tailnet, auth, lease

Level 0Spark
0 XP0/48 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

A Chat PIN Must Never Type

If a credential that opens Pippa chat can also open a terminal keyboard, you have built the model-callable write this quest keeps refusing, only now it fits in a pocket. The gateway checks the connecting device's tailnet identity and an operator-owned read/control permission. No model credential. No sibling HTTP credential. No long-lived password stored in the app as a substitute for the device. Editing a Mac's row cannot redirect an existing connection or its automatic reconnect into a different host, and an invalid address is refused without touching the old one.

Read permission is observation. Control permission is the right to type into that Mac's sessions beside whoever else is there, and to hold one briefly. A device approved only to look cannot type, resize or hold, no matter how many times the thumb taps. That split is how you lend a glass to someone who should see a job and never type in it.

Office Is a Default, Not a Prison

Known fleet Macs are one tap away. A fresh install starts out knowing the family's office Mac. A custom address stays available for the day one changes. None of that is a license to print tailnet addresses in a quest, or to bake a single host into the binary as destiny. The working contract uses one gateway per Mac, each approving devices for itself. The authorized destination, the next track, is a phone that can also go direct. Today's credential is still the device, not a password you could paste into a model.

The device is who you are. Permission is what you may ask. A model token that can type is a keyboard with a brain. Do not hand the gateway that token.

Code

What the gateway is allowed to believe·text
CONNECTING DEVICE
  identity:  tailnet node (who this glass is)
  permission: operator-owned { read, control }

read    -> observe only: no input, no resize, no hold
control -> type beside other surfaces; may hold; the daemon serializes every byte

NEVER accept as input-granting
  Pippa session token
  sibling door credential
  a PIN reused from chat
  a password living in the app's settings

# Changing the destination of an existing connection
# must not piggyback on automatic reconnect.
# Edit is a new connect, or it is nothing.

External links

Exercise

A sibling app wants to "just use the Pippa token, we already have it on the phone." Write the one-sentence refusal, and name the two permissions (read, control) that token would smear together. Then name the job that still belongs to the daemon after control is granted (putting every surface's bytes in order).
Hint
If the token both opens chat and types, you cannot revoke typing without also locking the person out of Pippa. That coupling is the defect.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign in — Please sign in to comment.

No comments yet — be the first.