Automic Vault

Automic Vault 4.18.0 · macOS

App guide

What every destination in the Automic Vault operator console shows and controls.

App guide

The screenshots use a harmless sample Secret Name; stored Values remain hidden.

Detectors

Detectors inspect supported credential locations and configurations for Exposures, Hazards, and other security-relevant Findings. Run av detectors --json for the installed catalog. A selected detector explains its trigger conditions, sensitive files, current result, remediation, and source-linked rationale.

Detector catalog with a passing plaintext-credential check and its source-linked rationale

Security basis. Detection and remediation are separate operations. A Finding records evidence about known state. The operator reviews any credential move, configuration rewrite, or authority change as a separate Tool-specific migration.

Workflow. Start with av scan --show-all for a human report. Use the app to read the selected detector's paths and explanation. If a hardener is available, review it under Hardened Tools before running av harden TOOL. Re-run the exact detector and Doctor afterward.

Limits and failure modes. Coverage is catalog-bound. A clean result means the detector's trigger did not fire against the files it could inspect; it does not prove the credential exists nowhere else. Missing permissions, absent Tools, parse failures, and unsupported versions must be interpreted from the Finding, not collapsed into “secure.”

Hardened Tools

Hardened Tools shows installed hardeners and native protected routes. A detail view identifies the current launcher or Target, current result, what the hardener changes, why that design was chosen, caveats, and recent use.

AWS hardener status with installed Target and embedded security reference

Security basis. A hardener removes a known plaintext or ambient-credential path and replaces it with a route Automic Vault can identify and authorize. The route is Tool-specific: AWS can issue short-lived STS credentials; Docker can bind access to a registry operation; GitHub can classify read and write API operations. Tool semantics provide narrower authority than generic environment injection.

Workflow. Read the complete embedded reference, check applicability with av hardeners --json, run av harden TOOL, then run av doctor TOOL. Confirm command -v TOOL resolves to the protected launcher described by the hardener. Keep the original credential until the protected read path succeeds; remove it only after verification.

State changes. Depending on the Tool, hardening can move a credential into Custody, install a signed vendor distribution, replace a command with a small launcher, change protected ownership, or configure a native credential-helper route. Run the hardener as the current user and elevate only the steps that ask for sudo.

Limits and rollback. Hardening protects the credential route, not the Tool's intent. A Tool can still disclose a Value after receiving it. Read each hardener's rollback notes. av unharden supports Homebrew; use the installed hardener documentation for other recovery procedures.

Authorization Gates

Authorization Gates are the operator's view of policy. Each Gate identifies the request type, protected Secret patterns, allowed Targets, the default rule for all other apps, Hardened Runtime requirements, and exact per-launcher overrides.

GitHub Secret Gate with default policy and a verified ChatGPT override

Security basis. A Gate evaluates the complete request envelope. The same Secret Name can therefore be Read Only for one Verified Launcher, Approval Required for every other app, and unavailable to a Target whose runtime or path does not match. Per-launcher policy narrows authority while live identity and request validation remain in force.

Workflow. Select the Gate for the Tool, inspect Targets and Secret patterns, then review Default Policy before adding a Launcher rule. Begin at the least powerful Access Level that supports the workflow. Trigger a harmless read and inspect Authorization History to confirm the matching rule.

Failure modes. A denial after an app or Tool update can mean the selected binary, code signature, runtime, or enrolled generation changed. A missing Gate may reflect the installed build's catalog or UI state. Runtime Gate definitions come from the signed app's static catalog; a failed hardener diagnostic never moves a Tool-specific request to the Direct Secret Gate. Fix the Tool-specific mismatch instead of substituting broad Direct Access.

Descendant Launcher rule overrides

The nearest Verified Launcher with an explicit Access Level normally supplies policy. At the GitHub gate, Terminal with Write Access does not displace a nearer agent's Read Only rule. Intermediaries with no explicit Access Level are transparent.

To let a harness supply policy for Launchers it starts, open Authorization Gates, select a gate, and add or select the harness's explicit rule. Choose its Access Level, enable Override descendant Launcher rules, then choose Review Changes and approve. The option defaults off, including existing rules. It applies to that Launcher at that gate; the outermost eligible override wins.

Harness with override enabled Child agent Recognized GitHub write under Launcher policy
Read Only Write Access Requires Approval
Write Access Read Only Automic authorization with an override warning
Write Access Deny Denied

These examples assume verified live identities, accepted runtime protections, and no other denial or independent authority source. Direct Access, Blessings, and Temporary Access Grants retain their own semantics; this setting is not a ceiling over all authority or an execution sandbox.

The Mac verifies live original-parent links between the ancestor and descendant. Helper aliases for one process and Retained Launcher Provenance alone cannot prove that relationship. Missing override evidence requires Approval rather than falling back to a potentially broader child rule. Runtime requirements on superseded explicit rules still apply. Explicit Deny remains a veto, and Unknown operations still need Approval unless denied.

Disabling the option or removing an enabled override rule also requires Approval: a child may have broader access. Launcher Bundle cleanup cannot remove an enabled override unattended; remove its rule through the reviewed gate flow first. History and automic notifications warn when an override permits an operation that a child's explicit rule would have sent to Approval.

SSH retains its nearest-Launcher boundary: ordinary ancestor rules do not supply fallback access, and an ancestor override cannot suppress default Deny when the nearest Verified Launcher has no explicit rule. Each SSH key has its own gate.

See the canonical Descendant Launcher Rule Override and ADR 0065.

Denial controls

Default Policy combines the default Access Level and an optional Denial Threshold. A threshold denies its selected level and above without Approval; Unknown only, where supported, denies only unclassified operations. A matching Launcher rule uses its own denial boundary. Denial-only rows inherit the default allow level. Weakening denial requires Approval.

Explicit matching denials win over allow rules, Blessings, Temporary Access Grants, and decision reuse. Default denial applies without a matching Launcher record, even when no Launcher can be verified. SSH checks for a record on the nearest Verified Launcher when deciding whether default denial applies.

After two eligible Approval presentations for the same Launcher and gate within thirty seconds, the Mac Deny menu and full iPhone app offer a two-minute denial at the requested operation level and above. You must select it; prompt frequency never activates it. Unknown operations do not offer this action. End it from the Mac menu bar or let it expire to return to ordinary policy. It cannot revoke Secrets already released and expiry never approves an operation.

Blessed Scripts

See the Blessed Scripts guide for a complete example.

A Blessing binds a reviewed script to its canonical path, SHA-256 digest, interpreter, Script Declaration, Secret Names, declared Capabilities, and optional Launcher Endorsements. The app shows the exact enrolled state and can revoke or replace it.

Blessed deployment script with digest, Secret Names, capabilities, and calling-app policy

Security basis. Scripts are mutable text and usually run through a powerful interpreter. Automic Vault therefore approves a verified snapshot rather than trusting the filename. Execution normally uses a checked /dev/fd/N snapshot. If the interpreter cannot execute that snapshot, you may accept canonical-path execution during Blessing review. That exception warns on every run because same-user code can edit the file between verification and execution. Existing Blessings need a new review to acquire it. AV_SCRIPT_PATH and AV_SCRIPT_DIR identify the canonical source.

Workflow. Put the absolute av inject shebang first, place the optional Script Declaration immediately after it, review requested Secret Names and capability ceilings, then run av bless PATH. Use --endorse-launcher only when the exact Verified Launcher should receive automic authorization for the script.

Changes and revocation. Editing, replacing, or moving the script invalidates the Blessing. Re-blessing is a new security decision; review the displayed diff. Revocation removes policy but does not undo external actions from earlier runs.

Limits. A capability is a ceiling, not a grant. A blessed script can still misuse every operation inside its approved ceiling, and an interpreter remains a large Target. Keep scripts short, deterministic, and narrow.

Without a capabilities manifest, a script inherits its execution context's automic authority. capabilities: { inherit: true } makes this explicit. capabilities: {} instead blocks inherited automic authority, including Launcher policy, Direct Access Rules, outer Blessings, and Temporary Access Grants, for later gated operations attributable to that live execution. The script's own requested Secrets still need separate authorization. This ceiling does not sandbox ungated commands or survive loss of observable script ancestry.

Launcher Bundles

A Launcher Bundle packages one regular, single-file Mach-O CLI into a signed, Hardened Runtime app and installs a command link for it. The detail view exposes the bundle identifier, signing mode, installed location, command, selected-source and signed-payload hashes, entitlements, and enrolled generation.

Enrolled Launcher Bundle with installed command, pinned hashes, signing, and entitlements

Security basis. A mutable developer CLI often lacks the stable app identity needed for launcher policy. Bundling creates an exact ad-hoc-signed snapshot, installs it under protected ownership, and enrolls that generation. Automic Vault verifies the digest, signature, enrollment, and runtime again when it is used.

Workflow. Choose the actual Mach-O executable, name the bundle and command, review compatibility exceptions, prepare the snapshot, approve installation, and verify the installed hashes in the detail view. Rebuild and re-enroll after an update; do not silently replace the payload in place.

Compatibility exceptions. JIT, unsigned executable memory, and disabled library validation widen the attack surface. Enable only the exception the CLI provably requires. A payload with different entitlements represents a different review decision.

Deletion and limits. Deleting revokes enrollment and related launcher rules before the bundle is moved to Trash. A Launcher Bundle establishes identity and integrity. It supplies no trust judgment, safety review, or sandbox.

Secrets

Secrets is the inventory of Secret Names and their Value sources. The app shows availability and source labels, but never redisplays stored Values. One Secret Name can have a Global Value and multiple Project Values.

A harmless sample Secret with its hidden Global Value, availability, and Direct Access state

Security basis. Operators can reason about names, sources, selection, and authority without turning routine administration into Disclosure. Replace is a write-only operation: enter the new Value, but do not reveal the old one.

Workflow. Search by Secret Name, verify the selected Value sources, inspect availability, and review Direct Secret Access. Use av save for terminal entry, --multiline for hidden multiline input, or --stdin for exact redirected input; use the app to replace, delete, rename, or change availability. After renaming, recheck scripts, Gates, and integrations that requested the old name.

Destructive changes. Deleting the final Value removes the Secret and its Direct Rules. A rename changes the requested name and can break consumers. These actions do not remove copies already received by Targets or stored elsewhere.

Limits. Availability is not authorization, and a Secret Name is not a credential type. Automic Vault does not infer that two differently named Values are equivalent or rotate an external credential when a stored Value is replaced.

Active Proxies

Active Proxies lists live proxy sessions with Target, PID, authorized Secret Names, start time, request count, allowed origins, and individual requests.

Harmless live proxy session for a sleep process and sample Secret Name

Security basis. av proxy gives the Target random Secret References and a session Proxy Credential instead of raw Values. Destination rules are created only after approval and stay in memory, scoped to the session and origin.

Workflow. Confirm the Target and Secret Names in the session Approval, watch origins appear as the Target uses them, and terminate the session when the task ends. An unexpected origin is a reason to stop and investigate, not a prompt to approve broadly.

Termination. Terminating ends the registered session, references, Proxy Credential, and memory-only rules. It does not recall a bearer credential from a destination that already received it or terminate unrelated Target state.

Limits. A Target may bypass configured proxies or open another network path. Proxying narrows delivery and supports origin-specific decisions; it is not network containment.

Authorization History

Authorization History records recent allowed and denied requests with decision, decision source, command, reason, Verified Launcher, Secret Names and selected sources, Gate Client, Target, runtime, and working directory.

Authorization History filtered to a complete sample proxy decision

Security basis. A decision without its inputs is not explainable. History keeps enough of the request envelope to answer why a rule matched, why a human was asked, and which Value source was selected. An allowed Secret Use is persisted and verified before release.

Workflow. Filter by Tool, launcher, command, Secret Name, or decision. Compare the Decision source and reason with current Gate policy. For a denial, fix the first mismatched invariant: Target, runtime, launcher, Value source, or operation. Do not widen every rule. Records with the required metadata offer Configure Launcher…, which reverifies the installed Launcher before opening its exact gate rule or the reviewed rule-creation flow. Opening the editor grants no authority.

av history reads the same local history through the signed CLI. It shows the newest 50 records by default; --since 7d selects a seven-day window. Each read requires Approval unless that exact Verified Launcher has Authorization History Access in its own Settings row. The av list grant does not apply. See the CLI reference. An unverifiable Launcher cannot use the automatic grant and needs Approval.

Assurance boundary. History is local and bounded. It is not append-only, tamper-proof, remotely replicated, or guaranteed to contain every event after same-user code damages local state. The rolling store retains encrypted record payloads for up to 30 days and a configurable size limit of 1–1024 MiB (default 25 MiB), whichever bound comes first. SQLite overhead is additional. Change the payload limit in Settings; it applies transactionally on the next history access. The app browses retained records by day. Reads exclude expired records immediately; writes and background maintenance after reads prune them. An unused database may retain expired ciphertext until its next access. Export security evidence elsewhere when the audit requirement exceeds this local operator record.

Doctor

Doctor verifies the installed protected route: ownership, launchers, dependencies, Target selection, exact file content, permissions, configuration, and PATH precedence. Healthy Tools disappear from the problem list; failures include a reason and remediation.

Doctor with no unresolved installation problems

Security basis. Policy is only as strong as the route that reaches it. A correct Gate cannot protect a command if PATH resolves to an unprotected binary, a launcher is writable, or the expected credential remains in plaintext.

Workflow. Run av doctor after installation, hardening, Tool updates, PATH changes, and policy failures. Use av doctor TOOL --json in diagnostics, but present the human remediation before changing ownership or files.

Limits. Doctor checks known invariants for supported Tools. It is not a malware scan, filesystem integrity monitor, code review, or proof that every process on the Mac is healthy.

Settings

Settings controls human Approval routes, feedback for automic authorization, retained launcher provenance, GPG Signing, SSH Agent, av list policy, the separate av history grant, history payload size, and version/runtime information. Each control changes a different boundary; enabling one does not implicitly enable another.

Use Settings after reading the corresponding section below. Security-sensitive changes require Approval or system authentication where the control demands it.