// API keys, OIDC, Wallets, Audit screens const KeysScreen = ({ openModal, env }) => { const [filter, setFilter] = useStateS("all"); const keys = API_KEYS.filter(k => k.env === env || env === "dev" && k.env === "dev" || filter !== "all"); const shown = API_KEYS.filter(k => filter === "all" ? true : k.status === filter); return ( <>

API keys

Server and test credentials for this project. Keys are scoped to an environment — rotating one in prod does not affect staging.

}>Export scopes } onClick={() => openModal("newkey")}>New key
k.status === "active").length}` }, { value: "pending", label: "Pending" }, { value: "revoked", label: "Revoked" }, ]}/>
Filter keys…
{shown.map(k => ( ))}
Label Prefix Env Scopes Last used Created Status
{k.label}
{k.id}
{k.prefix}… {k.env}
{k.scopes.slice(0, 2).map(s => ( {s} ))} {k.scopes.length > 2 && +{k.scopes.length - 2}}
{k.lastUsed} {k.created}
Passkey step-up is required for production keys
Any reveal, rotate, or revoke of a sk_live key triggers a hardware-backed step-up. Set per-owner policies in Settings → Safety.
Configure
); }; Object.assign(window, { KeysScreen });