FIELD MANUALSECTION 07 / SAFETY

SECTION 07 / SAFETY

Security boundary

Lanyard reduces stale-socket failure without becoming a second place that holds secrets.

Trust model

Lanyard is a single-owner local tool. It trusts the account that launches it, local configuration, installed agents, and socket paths that owner explicitly registers or permits discovery to find. Normal stale state, agent disappearance, crashes, and concurrent sessions remain in scope.

Private keys

Private key bytes never cross the agent protocol and are never available to Lanyard. It forwards identity and signature messages; upstream agents enforce their own confirmation, unlock, biometric, and destination restrictions.

Read-only surface

Adding/removing identities, locking/unlocking agents, and mutation extensions are rejected. Unknown extensions are rejected. Protocol frames larger than 256 KiB and candidate sets beyond the configured limit are bounded.

Availability tradeoff

A generic signing failure causes Lanyard to try the next current candidate. This is intentional: identity ownership can change, and some agents use the same failure response for “not available now” and explicit denial. Lanyard does not use prior identity listings as an authorization decision. If all candidates fail, it returns failure; it never fabricates a signature.

FORWARDING REMAINS POWERFULAn SSH server receiving your forwarded agent can request signatures while the connection exists. Use OpenSSH destination constraints and only forward to machines you trust.

Reporting

Please report vulnerabilities privately through GitHub’s security advisory interface. Do not include private key material, live socket contents, or sensitive hostnames in diagnostics.