# Local Authentication

> Route Face ID/Touch ID/device-passcode implementation tasks to the correct Knowledge Contracts -- availability and biometry-type detection, policy evaluation, reason strings and Info.plist, error handling, LAContext lifecycle, Keychain-biometric binding, and fallback UX. Use when checking biometric availability, calling evaluatePolicy, writing an NSFaceIDUsageDescription string, handling an LAError, managing LAContext lifetime, binding a Keychain item to biometrics via SecAccessControl, or deciding on a passcode fallback. v1 is iOS/iPadOS LocalAuthentication framework API only -- no macOS/watchOS-specific behavior, no general Keychain storage (SecItemAdd/Copy/Update for non-biometric-bound items). Triggers on Face ID, Touch ID, LAContext, LABiometryType, canEvaluatePolicy, evaluatePolicy, deviceOwnerAuthentication, deviceOwnerAuthenticationWithBiometrics, LAPolicy, LAError, biometryNotEnrolled, biometryLockout, NSFaceIDUsageDescription, localizedReason, localizedFallbackTitle, SecAccessControl, biometryCurren

- Skill: `caglarbaranbora/local-authentication` (Agent Skill)
- Install (CLI): `npx skillmds@latest add caglarbaranbora/local-authentication`
- Raw SKILL.md: https://api.skillmd.com/api/skills/caglarbaranbora/local-authentication/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: caglarbaranbora (https://skillmd.com/u/caglarbaranbora)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/caglarbaranbora/local-authentication

---


# Local Authentication — Foundations Skill

## Purpose

Route Face ID/Touch ID/device-passcode implementation tasks to the
minimum required Local Authentication Knowledge Contracts. v1 scope is
the iOS/iPadOS LocalAuthentication framework API plus the
Keychain-biometric binding seam — no macOS/watchOS-specific behavior, no
general Keychain storage.

## Routing

Load only the contracts relevant to the task. All paths relative to
knowledge/local-authentication/.

-   Checking availability or biometry type -> availability-and-biometry-type.md
-   Calling evaluatePolicy / choosing a policy -> policy-evaluation.md
-   Writing localizedReason or NSFaceIDUsageDescription -> reason-strings-and-info-plist.md
-   Handling an LAError -> error-handling.md
-   Managing LAContext lifetime or re-enrollment detection -> context-lifecycle.md
-   Binding a Keychain item to biometrics -> keychain-biometric-binding.md
-   Deciding on or configuring a passcode fallback -> fallback-ux-and-passcode.md

Never load more than the contracts relevant to the specific question.

## Stop Conditions

Stop and report if the requested topic has no matching Knowledge
Contract in knowledge/local-authentication/ — do not guess or fall back
to general knowledge.

-   macOS/watchOS-specific LocalAuthentication behavior — Deferred
-   General Keychain storage (`SecItemAdd`/`SecItemCopyMatching`/
    `SecItemUpdate` for non-biometric-bound items) — owned by `security`

