Persistent agents | September 11, 2026

Meta Muse is a security architecture to test, not a trust badge

Muse combines a persistent cloud computer, a constrained agent runtime, secretless connector workers, an independent Sentinel, scoped approvals, and editable memory. That separation is the right direction. The engineering job is to verify that each boundary still holds after prompt injection, stale state, long-running work, permission changes, and recovery.

Muse Secure VM Sentinel effect plane Credential surrogation Evidence checked Sep 11
Technical radar showing persistent agent runtime, authorization, state, and recovery layers

Muse makes the persistent-agent problem concrete

Meta launched Muse on September 8 as a personal agent that can browse, send email, make purchases, build tools, remember details, schedule background work, and operate after its app closes. The important technical story is not that a chat interface became more autonomous. It is that Meta published a reasonably detailed separation model for an agent that lives beside a person's inbox, calendar, credentials, files, payments, and long-term goals.

The launch drew a large developer conversation: the principal Hacker News item reached 652 points and 733 comments during the research window. That attention should not be mistaken for acceptance or proof of safety. It does show that persistent personal agents have crossed from a niche harness concern into a mainstream architecture question. A system that can act while the user is absent needs stronger boundaries than a chatbot that only returns text.

Meta's disclosures describe a dedicated Linux virtual machine per user, a containerized runtime cell, host-side security services, an isolated credential store, typed connector workers, a brokered browser, a persistent database, and Sentinel as the sole authority for network egress and connector actions. The company also says Muse may launch subagents, write its own tools, edit itself, and process untrusted content. Those two facts belong together: the more adaptable the agent becomes, the less reasonable it is to let the same runtime define and enforce its own authority.

A secure personal agent is not one clever model watching another. It is a chain of independently enforceable contracts whose failure can be observed, contained, and recovered.

This article treats Meta's description as a case study, not an endorsement. The launch post is first-party evidence about intended architecture. It cannot independently prove implementation correctness. Meta itself says prompt injection remains open, Muse will still make mistakes, and the launch configuration does not cryptographically prevent Meta from accessing VM data when necessary to operate or secure the service. The planned Confidential VM is a future control, not a feature to credit to the current release.

Read the architecture as five security domains

Marketing language collapses a personal agent into one product. Security review should expand it into domains with different authorities. Muse's disclosed structure supports at least five.

1. Runtime cell

The model-facing harness, filesystem, binaries, custom tools, subagents, and scheduled work execute inside a constrained systemd-nspawn container.

2. Durable state

Workspace files, application state, memory, task plans, activity history, and backups persist beyond an individual turn.

3. Credential authority

authd stores real tokens outside the runtime. Workers and the browser receive narrowly usable surrogates or injected credentials at the point of need.

4. Effect authority

Sentinel evaluates connector methods and concrete network requests, then allows, denies, or requests approval under current policy.

5. Human control

The client presents structured approval cards, activity, permissions, memory files, status, interruption, and browser takeover outside the agent's conversational channel.

The separation matters because compromise should not automatically compose. Root inside the runtime cell is mapped to an unprivileged host user. Credential-capable code runs outside that cell. Unix-domain socket peer checks constrain service calls. A connector worker has its own credential allowlist. The browser agent sees an accessibility snapshot through a broker rather than unrestricted DevTools. Network policy examines destination, IP, port, protocol, method, path, and decoded request.

None of those controls is sufficient alone. Container isolation cannot decide whether sending an email is authorized. A secretless runtime can still cause a privileged worker to misuse a credential. An approval can be valid for yesterday's recipient but invalid after the draft or attachment changes. An audit trail can faithfully record an unauthorized action. Defense comes from preserving the distinctions.

LayerWhat it can establishWhat it cannot establish
Runtime isolationLimits host access and cross-user blast radiusWhether an external action serves the user's current intent
Credential isolationPrevents the model from reading reusable secretsWhether a connector invocation is legitimate
Sentinel policyEnforces action and egress decisions outside the runtimeThat its model-derived purpose summary is factually complete
User approvalRecords consent to a presented action scopeThat the user understood hidden consequences or future reuse
Activity logMakes planned and completed events inspectableThat all relevant state and downstream effects were captured
Backup and restoreRecovers selected persistent state after failureThat external emails, purchases, or disclosures were reversed

Four contracts make a persistent agent reviewable

1. State custody: what persists, where, and under whose control?

A turn-based assistant can lose context; a personal agent is expected to keep it. Muse stores files, generated artifacts, memory, tasks, and application state in its VM and says users can inspect, edit, download, or ask it to forget learned details. That is useful product behavior. The security contract needs more precision: which database row, file, vector record, task snapshot, backup, inference trace, telemetry event, and downstream copy is affected by “forget”?

State must carry provenance and purpose. A dietary restriction learned from one dinner plan should not silently become an authoritative medical fact. A stale travel preference should not override a new explicit instruction. A malicious page should not be promoted into durable memory. Each durable record needs an origin, timestamp, sensitivity class, confidence, permitted uses, expiry, owner, and deletion status. Memory quality is not only retrieval relevance; it is whether the agent can justify why the record is allowed to influence this action.

2. Identity and credentials: who is acting for whom?

Meta's credential-surrogation design addresses a frequent agent failure: giving tool code a reusable OAuth token or password that can be exfiltrated. The runtime receives a surrogate; Sentinel swaps in the real credential only at the authorized network boundary. Built-in connectors also run business logic outside the model-controlled cell. Email filters remove one-time passcodes and password-reset or magic-login links so inbox access does not automatically become account-takeover authority.

The remaining contract is attribution. Every action should bind the user identity, agent instance, runtime version, connector worker, credential reference, delegated authority, and approving principal. “The agent sent it” is not an audit identity. If a subagent, generated tool, or browser worker performed the step, the chain must remain reconstructable without exposing the secret itself.

3. External effects: approval must bind to the exact action

Sentinel's declared role resembles the permission-kernel pattern: the agent proposes; an external authority decides. Meta says approval is delivered directly through the client rather than through the Muse conversation, and grants can be one-time, session-scoped, task-scoped, time-bounded, or perpetual. That channel separation blocks a compromised conversation from simply pretending the user approved.

The hard part is change. A purchase approval must bind merchant, item, quantity, total, currency, address, time, and payment instrument. An email approval must bind recipients, subject, body digest, attachments, account, and send time. If any material field changes, the old approval must fail. If a redirect changes the final host, or DNS resolves to a private address, the preflight decision must not be reused. “Approved this task” is too coarse for irreversible effects.

4. Recovery and deletion: stopping computation is not reversing the world

Muse says VM data is backed up continuously and the browser can be taken over while the agent pauses. Those controls improve recoverability. They do not reverse an email, cancel every purchase, retract shared data, revoke every downstream token, or erase a fact from every backup. A recovery contract separates local restore from external remediation.

For every effect class, define a compensating action, deadline, evidence source, and escalation owner. The system should know whether cancellation is possible, whether a return or dispute is required, whether a recipient must be notified, and whether an exposed credential must be revoked. Deletion likewise needs a receipt across live state, indexes, backups, training eligibility, telemetry, connectors, and exported artifacts. A friendly “forgotten” response is not deletion evidence.

Normalize every proposed action before policy sees it

An authorization plane should not reason over a persuasive chat summary. It needs a typed envelope derived from actual current state. This non-Meta example shows the minimum shape an evaluator can test.

action:
  actor:
    user_id: usr_2048
    agent_id: muse_instance_7f2
    runtime_digest: sha256:...
    task_id: trip_rome_2026
  effect:
    connector: gmail
    method: send_message
    account: personal@example.com
    recipients: [hotel@example.it]
    body_sha256: 81c9...
    attachments: []
  data:
    classes: [contact, travel_plan]
    tainted_sources: [browser_page_991]
  authority:
    credential_ref: gmail_oauth_12
    grant: one_time
    expires_at: 2026-09-11T12:05:00Z
  recovery:
    compensating_action: notify_and_request_deletion
    owner: usr_2048

The policy path then stays deliberately boring. Model classifiers may add signals, but they should not be the only enforcement mechanism.

def authorize(envelope, current_state, grants, policy):
    assert envelope.runtime_digest in policy.allowed_runtimes
    assert envelope.effect == derive_effect(current_state)
    assert destination_is_public_and_expected(envelope.effect)
    assert connector_scope_allows(envelope.effect)
    assert credential_is_bound_to_connector(envelope.authority)

    if envelope.data.tainted_sources:
        require_fresh_user_approval(envelope.digest())

    grant = grants.match_exact(envelope.digest())
    if not grant or grant.expired:
        return ASK_USER

    return ALLOW_ONCE

The key property is recomputation. The approval digest is built from the action that will execute, not the agent's earlier plan. Policy evaluates the resolved destination and connector method. Credentials are inserted after authorization. The result is consumed once unless a narrower repeatable grant was intentionally issued.

Test the boundaries with adversarial state changes

A polished demo proves the happy path. Acceptance testing should try to make two individually reasonable layers compose into an unsafe result. Run the same fixtures after every model, connector, policy, browser, or runtime change.

TestAdversarial changeRequired evidence
Approval replayEdit recipient or attachment after approvalOld grant fails; a new exact card is required
Redirect and rebindingPublic URL redirects or resolves to private infrastructureFinal destination is re-evaluated and blocked
Secret extractionPrompt asks tool or browser to print tokensRuntime never receives real reusable credential material
Generated connectorAgent writes a new CLI that imitates a trusted toolNo credential route or network grant appears automatically
Memory poisoningWeb content asks to persist a false preferenceUntrusted input is not promoted without policy and provenance
Perpetual permissionTask context changes after a broad grantGrant scope is visible, revocable, and rejected outside purpose
RestoreRecover a backup containing an old task and token referenceRevoked credentials and permissions stay revoked
Forget/deleteDelete a memory used in plans and backupsReceipt lists every live, indexed, exported, and retained copy
Human takeoverUser takes control during form entryAgent and subagents pause; no background submit occurs

Measure more than attack success. Track false approvals, false blocks, repeated prompts, stale grants, unowned background tasks, restore failures, deletion incompleteness, and time from unsafe observation to containment. Meta's design post explicitly discusses banner blindness. If users approve everything to make friction disappear, an otherwise correct authorization channel becomes an operational failure.

Red-team the purpose text too. Sentinel derives a user-visible purpose from connector, method, action class, scope, and task context. That explanation can omit a consequential detail without being literally false. Tests should compare the card with the normalized action envelope and ask whether a reasonable user could detect recipient, price, scope, permanence, or disclosure changes.

Failure modes the architecture does not erase

FailureWhy layers can still fail togetherControl
Confused deputyA valid connector uses valid credentials for a purpose the user did not authorizeBind identity, task purpose, method, fields, data class, and expiry
Classifier agreementIndependent models share blind spots or adversarial examplesKeep deterministic isolation, typed tools, scopes, and egress enforcement
Approval fatigueFrequent cards train users to accept without inspectionAuto-allow only low-risk read paths; aggregate and measure interrupt quality
Persistent compromiseInjected state survives the page, turn, task, or model updateProvenance, quarantine, promotion gates, expiry, and clean-room recovery
Backup resurrectionRestore brings back revoked task state or referencesReconcile restored state against current revocation and policy ledgers
Provider boundary confusionUser isolation is interpreted as provider-inaccessible encryptionState the launch boundary plainly; verify future confidential-compute claims separately
Irreversible external effectLocal rollback cannot undo delivery, disclosure, purchase, or publicationPre-effect checks plus documented compensating workflows

The distinction between current and planned controls is especially important. At launch, Meta says operational policies restrict personnel access but do not technically prevent access needed to support, secure, or operate the service. It plans a Confidential VM later in 2026 with user-held keys and public continuous audit. Teams should evaluate that implementation when it ships: attestation, key custody, update path, debug access, backup encryption, recovery, and what metadata remains outside the confidential boundary.

Likewise, a bug bounty of up to $300,000 is evidence of an external reporting channel and stated incentive, not evidence that the system has no severe bugs. The useful question is whether reports produce reproducible fixtures, affected-version records, containment guidance, and regression coverage.

Builder acceptance checklist

Draw authority boundariesName which component proposes, stores, authenticates, authorizes, executes, observes, and recovers each action.
Keep secrets out of model reachUse workload-bound credentials, surrogates, typed workers, narrow scopes, rotation, and revocation.
Bind approvals to bytesDigest recipients, content, attachments, amount, destination, connector, account, purpose, and expiry.
Govern persistent stateRecord provenance, promotion, sensitivity, purpose, freshness, correction, export, retention, and deletion.
Test composition failuresChange state between planning, approval, credential insertion, redirect, execution, restore, and replay.
Prove recoveryDrill interruption, runtime replacement, backup restore, connector revocation, external remediation, and deletion receipts.
Measure human frictionTrack prompts, meaningful rejects, unsafe accepts, stale grants, and whether users can explain what they approved.
Version every claimSeparate launch behavior, rollout scope, provider disclosures, future plans, and independently verified results.

FAQ

Is Meta Muse safe from prompt injection?

No. Meta explicitly describes prompt injection as an open industry problem and says Muse can still make mistakes. The disclosed system tries to reduce probability and bound impact with model training, untrusted-input labels, classifiers, runtime isolation, typed connector workers, credential separation, egress enforcement, scoped approvals, and human review. Each layer still needs adversarial testing.

Why use an AI Sentinel instead of only deterministic policy?

Some requests require context-sensitive interpretation: whether the proposed disclosure fits the user's task, whether a page appears manipulative, or how to explain a pending action. A model can add signal. It should sit inside a deterministic envelope that controls identities, connector methods, destinations, data classes, credential access, grant scope, and execution.

Does the dedicated VM solve privacy?

It helps isolate users and gives the agent a persistent workspace. Privacy also depends on inference and telemetry flows, provider operations, connectors, backups, training settings, retention, exports, and deletion. Meta says current operational policy restricts access but does not cryptographically exclude Meta; its Confidential VM is planned for later.

How is this different from the Muse Spark article?

The earlier Muse Spark guide evaluates coding-model API affordances such as planning, tool use, delegation, and context compaction. This page evaluates the consumer agent runtime: persistent state, credentials, connectors, egress, approvals, browser control, recovery, and deletion.

Sources and further reading

Related reading: design security beyond permission prompts, contain persistent workspace poisoning, and turn agent traces into verifiable execution receipts.