How to delegate while away
Use this guide before leave or a week of travel. You start with an active twin and an inbox that will keep
filling; you end with a delegations row active that routes your write
approvals to one colleague for at most 30 days, while your signatures and your twin stay yours. Creating a
delegation needs only a signed-in session; the delegate needs membership of the program and, for each item,
the write’s own permission. Every surface here carries the status word designed
until the R3 gates pass.
Delegation is routing, not authority. A routed item appears in the delegate’s inbox only if they hold the
write’s permission themselves; the decision records them as resolved_by with delegated_from_user_id, and
permission_exercised is their own key. The record reads “Routed under delegation from <Name>; decided by
<Name> in their own right.”
Prerequisites
- A colleague who is a member of the program (or of every program you belong to, for an all-programs delegation) and holds the permissions your proposals need; a scientist’s proposals need a scientist, lead or owner.
- An end date within 30 days and a reason.
Create the delegation
Open /me/delegations and choose Delegate. Pick the colleague, the program (or all programs), the start
and end dates and write the reason. Save calls POST /me/delegations with
DelegationCreate {delegate_user_id, program_id?, starts_at?, ends_at, reason}. The API refuses yourself as
delegate, a delegate without membership, more than 30 days, and any chain (a delegate cannot pass an item on) with
422 delegation_invalid; it audits delegation.create. Holders of program.twins.read in the program (owner,
lead, quality reviewer) see the delegation listed.
What is routed, what is not
Routed: inbox items of kind decision (write approvals from your twin or from a console turn) and question,
and batch_approval items, each only when the delegate holds that item’s write permission. Never routed:
signature items (a signature is yours alone) and, in R4, stage items; the audit row carries a CHECK that
delegated_from_user_id is null whenever signature_id is set. Standing-plan approvals stay with you: only
the bound person approves a twin’s plan. Your twin does not follow the delegate; it keeps filing under your
standing plans, and its proposals route.
What the delegate does
The item appears in the delegate’s inbox marked “Routed under delegation”. They open it, read the four panes
and Approve, Edit then approve or Decline with a reason through POST /me/inbox/{item_id}/resolve;
the service accepts them because an active delegation routes the item and they hold the write’s permission.
For a batch they select rows and confirm the sheet like anyone else; an item whose permission they lack fails
with batch_item_forbidden while the rest proceed.
Renew or revoke
A delegation expires at ends_at (delegation.expire, hourly job). Renewing extends it by at most 30 days
more and increments renewal_count, which the oversight holders can see (delegation.renew). Revoke
(DELETE /me/delegations/{delegation_id}) ends it at once (delegation.revoke); open items routed to the
delegate return to your inbox.
Read what changed
The record footer reads “Routed under delegation from Maya N.; decided by Priya S. in their own right.”
(illustrative). Setup › Audit shows the write with approved_by_user_id the delegate,
delegated_from_user_id you, permission_exercised the delegate’s own key, interrupt_id and both hashes.
The organisation audit export lists the delegation rows and the routed decisions with their metadata.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
422 delegation_invalid | self-delegation, no membership, more than 30 days, or the delegate already delegates to someone | pick a member, use a period within 30 days, or delegate directly |
| An item did not reach the delegate | they lack the write’s permission for that item | the item waits for you (or expires, nothing written); choose a delegate whose persona holds the key |
| The delegate cannot approve a standing plan | plans are never routed | approve it yourself when back; the duty pauses until then |
| A signature request is still in your inbox | signature items are never routed | sign it yourself, from the phone if needed, after re-authentication |
| The twin keeps filing while you are away | by design; the twin does not follow the delegate | pause the twin before leaving if you prefer nothing to be filed |
Related
- How to decide from your inbox.
- How to approve with a signature for what is never delegated.
- ADR 0022.
Source: PRODUCT-PLAN.md Part 7 section 5 (delegation, bound-user rule) and 7.4; PRODUCT-CONTRACT.md sections 11.4 and 11.7; api/app/db/models/delegation.py (DELEGATION_STATUSES, DELEGATION_MAX_DAYS); api/app/db/models/inbox.py (NEVER_DELEGATED_KINDS); api/app/db/models/audit.py (delegation-versus-signature CHECK); api/app/services/audit_actions.py (delegation.*); api/scripts/designed-routes.json (/me/delegations routes); web/lib/api/types.ts (DelegationCreate, DelegationOut); web/lib/content.ts (consoleCopy.routedUnderDelegation); decisions/0022-inbox-escalation-and-delegation.md