Confirmation lifecycle
- Send a normal Murph chat request.
- If the response includes
pendingConfirmations(orpendingConfirmation), show the proposed action and an approve/cancel control for each entry. - POST each user decision to the confirmation decision endpoint.
- If the user confirms, the response is a normal Murph chat response for the turn that executed the approved write.
- If the user cancels, the response only records the cancelled confirmation.
Prefer
pendingConfirmations (plural). Murph can propose multiple gated
writes in a single turn (e.g. queue N delete_campaign calls). Older clients
that only read pendingConfirmation (singular) render just the first widget
and silently drop the rest. New clients should iterate pendingConfirmations
and render one approve/cancel control per entry; each entry has its own
confirmationUid and is decided independently.Chat response fields
POST /api/v2/murph/chat and POST /api/v2/murph/chat/stream can return
two related fields on a turn where one or more protected writes were
proposed but did not run:
pendingConfirmations(array, new) — every pending confirmation issued this turn, in tool-call order. Render one approve/cancel control per entry. Empty (or omitted) when nothing gated this turn. New callers should prefer this field.pendingConfirmation(object, retained) — the first entry frompendingConfirmations, ornull. Kept for back-compat with clients that render at most one confirmation per turn (Slack, older SDKs). A client that reads only this field will silently drop the remaining N-1 controls when Murph gates multiple writes in one turn.
Confirm or cancel
POST /api/v2/murph/confirmations/{confirmationUid}/decision
Request body
Confirm response
Whendecision is confirm, the endpoint returns the same shape as a Murph
chat response. The approved write may appear in toolsUsed, and fields such as
escalated or customerSwitch reflect the write that actually ran.
If the approved tool returns an error, Murph distinguishes outcomes only when
the tool can prove the failure happened before any durable write could take
effect. In that case Murph says that nothing was written and can offer a fresh
approval after the cause is corrected. For timeouts, transport failures, server
errors, and tools that provide no proof, Murph reports the outcome as unknown
and asks you to verify the current state before retrying. This conservative
default prevents an already-applied write from being repeated after its response
was lost.
TARS PM investment decisions
TARS PM-seat conversations in Admin and ordinary chat use the same confirmation lifecycle when an accountable human adopts, prioritizes, defers, reorders, resizes, or declines a displayed investment recommendation. TARS first reads the canonical recommendation for the selected project or initiative, then stagestars_confirm_pm_investment_decision with the exact proposal,
disposition, target order, and any owned readiness action.
The pending confirmation is bound to the authenticated actor, conversation,
selected project or initiative, and canonical proposal targets. A confirmed
replay uses that stored scope; clients cannot replace it by sending a different
scope or target. The resulting decision records whether it came from Admin or
ordinary chat, but that provenance is resolved by the server rather than
accepted from client input.
A registered Slack investment-recommendation thread records the same canonical
decision semantics through its own server-validated thread and
accountable-human authority. It does not issue or redeem the pending
confirmation described on this page. Slack provenance is likewise resolved by
the server, never supplied as decision input.
Confirming an investment decision does not file an issue, add a
build-room-ready label, nominate work, request admission, launch a workspace,
or allocate compute. A request to cross one of those boundaries is a distinct
execution transition with its own authority and confirmation requirements.
These PM-seat tools are available only on authenticated internal TARS surfaces.
They are not general Murph campaign-management tools and do not change the
account or advertiser scope of a Murph conversation.
Cancel response
Whendecision is cancel, no write runs and the response only records the
cancelled confirmation.
Errors
400 VALIDATION_ERROR- the path or request body is malformed.404 NOT_FOUND- the confirmation is unknown, expired, cancelled, or already used.403 FORBIDDEN- the confirmation belongs to another actor or account.503 SERVICE_UNAVAILABLE- Murph is not available to process a confirmed write.
Related
Ask Murph
Use Murph to operate and troubleshoot your storefront.
Authentication
Authenticate Murph API requests.