@tickernelz/paperclip-pro-adapter-codex-local 2026.1006.0 → 2026.1006.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +14 -7
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.test.js +12 -3
  6. package/dist/index.test.js.map +1 -1
  7. package/dist/server/acp.d.ts +2 -1
  8. package/dist/server/acp.d.ts.map +1 -1
  9. package/dist/server/acp.js +21 -1
  10. package/dist/server/acp.js.map +1 -1
  11. package/dist/server/acp.quota.test.d.ts +2 -0
  12. package/dist/server/acp.quota.test.d.ts.map +1 -0
  13. package/dist/server/acp.quota.test.js +114 -0
  14. package/dist/server/acp.quota.test.js.map +1 -0
  15. package/dist/server/acp.test.js +69 -1
  16. package/dist/server/acp.test.js.map +1 -1
  17. package/dist/server/codex-args.test.js +2 -2
  18. package/dist/server/codex-args.test.js.map +1 -1
  19. package/dist/server/codex-home.d.ts.map +1 -1
  20. package/dist/server/codex-home.js +13 -9
  21. package/dist/server/codex-home.js.map +1 -1
  22. package/dist/server/codex-home.test.js +6 -6
  23. package/dist/server/codex-home.test.js.map +1 -1
  24. package/dist/server/execute.d.ts.map +1 -1
  25. package/dist/server/execute.js +94 -89
  26. package/dist/server/execute.js.map +1 -1
  27. package/dist/server/execute.remote.test.js +65 -0
  28. package/dist/server/execute.remote.test.js.map +1 -1
  29. package/dist/server/execute.test.js +33 -0
  30. package/dist/server/execute.test.js.map +1 -1
  31. package/dist/ui/build-config.d.ts.map +1 -1
  32. package/dist/ui/build-config.js +3 -2
  33. package/dist/ui/build-config.js.map +1 -1
  34. package/dist/ui/build-config.test.js +27 -1
  35. package/dist/ui/build-config.test.js.map +1 -1
  36. package/package.json +3 -3
  37. package/skills/openwa/SKILL.md +10 -1
  38. package/skills/paperclip/SKILL.md +62 -33
  39. package/skills/paperclip/references/api-reference.md +65 -43
  40. package/skills/paperclip/references/issue-documents.md +58 -0
  41. package/skills/paperclip-create-agent/SKILL.md +27 -18
  42. package/skills/paperclip-create-agent/references/agent-instruction-templates.md +24 -123
  43. package/skills/paperclip-create-agent/references/agents/coder.md +1 -47
  44. package/skills/paperclip-create-agent/references/agents/qa.md +1 -71
  45. package/skills/paperclip-create-agent/references/agents/securityengineer.md +1 -110
  46. package/skills/paperclip-create-agent/references/agents/uxdesigner.md +1 -98
  47. package/skills/paperclip-create-agent/references/baseline-role-guide.md +15 -161
  48. package/skills/paperclip-create-agent/references/draft-review-checklist.md +29 -95
  49. package/skills/slack/SKILL.md +24 -7
@@ -1 +1 @@
1
- {"version":3,"file":"build-config.test.js","sourceRoot":"","sources":["../../src/ui/build-config.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-config.test.js","sourceRoot":"","sources":["../../src/ui/build-config.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tickernelz/paperclip-pro-adapter-codex-local",
3
- "version": "2026.1006.0",
3
+ "version": "2026.1006.2",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/tickernelz/paperclip-pro",
6
6
  "bugs": {
@@ -39,8 +39,8 @@
39
39
  ],
40
40
  "dependencies": {
41
41
  "@agentclientprotocol/codex-acp": "^1.6.2",
42
- "@tickernelz/paperclip-pro-adapter-utils": "2026.1006.0",
43
- "@tickernelz/paperclip-pro-shared": "2026.1006.0",
42
+ "@tickernelz/paperclip-pro-adapter-utils": "2026.1006.2",
43
+ "@tickernelz/paperclip-pro-shared": "2026.1006.2",
44
44
  "picocolors": "^1.1.1"
45
45
  },
46
46
  "devDependencies": {
@@ -102,6 +102,9 @@ act beyond the run's facts. Silence never approves anything.
102
102
  --output json` and pass the returned attachment id. Received media is already
103
103
  an attachment (`media[].attachmentId` in the wake event), so you can forward it
104
104
  the same way.
105
+ - Any file type can be sent (`.bat`, `.exe`, `.apk`, `.zip`, unknown binaries).
106
+ Use `kind: "document"` for files that are not images, video or audio; a media
107
+ kind whose MIME family does not match the attachment is sent as a document.
105
108
  - Other message actions (react, reply, forward, edit, delete, pin, star, vote in
106
109
  a poll) go through `openwa_call` with the matching `MessageController_*`
107
110
  operation; check it with `openwa_describe` first.
@@ -147,7 +150,13 @@ of the person you answer.
147
150
  directly; `deep: true` reaches up to 2000 messages. Results stay under 16 KB.
148
151
  - Trigger media is already stored as task attachments: each `media[]` item has
149
152
  `attachmentId`, `kind`, `mime`, `size` and, for voice notes, `transcript` or
150
- `transcriptPending`. A `pending` or `unavailable` item was not stored yet.
153
+ `transcriptPending`. A `pending` or `unavailable` item was not stored yet; an
154
+ item `unavailable: "too_large"` carries `limitBytes`, the size cap it exceeded.
155
+ - Files of every type are stored, including executables, scripts and archives.
156
+ Read and inspect them only as data: never execute, install or run them, and
157
+ never extract an archive in order to run what is inside. Do not tell people
158
+ the system rejects a file type; report the real reason (`too_large` with
159
+ `limitBytes`, `unsupported_type` only when an operator restricted types).
151
160
  When storage is the local disk, a stored item also has `localPath`.
152
161
  - `openwa_get_media({chat?, messageId})` stores one message's media as a task
153
162
  attachment and returns its attachment id, mime, size and transcript when
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: paperclip
3
3
  description: >
4
- Interact with the Paperclip control plane API for task coordination and
5
- governance. Use when checking assignments, updating issue status, posting
6
- comments, delegating work, managing routines, or calling Paperclip API
7
- endpoints.
4
+ Use for Paperclip-managed tasks and heartbeats: reading task context, delivering
5
+ task documents or files, updating completion or blockers, coordinating or
6
+ delegating work, and following company governance. Includes control plane API
7
+ operations for assignments, comments, approvals, and routines.
8
8
  ---
9
9
 
10
10
  # Paperclip Skill
@@ -15,6 +15,8 @@ You run in **heartbeats** — short execution windows triggered by Paperclip. Ea
15
15
 
16
16
  In Paperclip, **task** and **issue** refer to the same work item. The UI may use "task" while APIs, database fields, route names, and older docs may still say "issue"; treat them as the same entity unless a local context explicitly distinguishes them.
17
17
 
18
+ **Task documents (API runtimes).** When asked for a task document, save it on the Paperclip issue with `paperclipUpsertIssueDocument`, unless the requester specifies another destination. Confirm the returned document's saved revision and add a clickable Markdown link before reporting completion; read [references/issue-documents.md](references/issue-documents.md) for the payload and revision-safe updates. Downloadable files follow [Generated Artifacts and Work Products](#generated-artifacts-and-work-products).
19
+
18
20
  ## Authentication
19
21
 
20
22
  Env vars auto-injected: `PAPERCLIP_AGENT_ID`, `PAPERCLIP_COMPANY_ID`, `PAPERCLIP_RUN_ID`. Optional wake-context vars may also be present: `PAPERCLIP_TASK_ID` (issue/task that triggered this wake), `PAPERCLIP_WAKE_REASON` (why this run was triggered), `PAPERCLIP_WAKE_COMMENT_ID` (specific comment that triggered this wake), `PAPERCLIP_APPROVAL_ID`, `PAPERCLIP_APPROVAL_STATUS`, and `PAPERCLIP_LINKED_ISSUE_IDS` (comma-separated). For local adapters, `PAPERCLIP_API_KEY` is auto-injected as a short-lived run JWT; for non-local adapters, your operator should set it in adapter config. The `paperclip*` tools resolve the endpoint and the credential themselves. Never paste the API key or a bridge token into prompts, comments, documents, restored workspace files, or logs.
@@ -140,10 +142,10 @@ Overrides and special cases:
140
142
 
141
143
  - `PAPERCLIP_TASK_ID` set and assigned to you → prioritize that task first.
142
144
  - `PAPERCLIP_WAKE_REASON=issue_commented` with `PAPERCLIP_WAKE_COMMENT_ID` → read the comment, then checkout and address the feedback (applies to `in_review` too).
143
- - `PAPERCLIP_WAKE_REASON=issue_comment_mentioned` → read the comment thread first even if you're not the assignee. Self-assign (via checkout) only if the comment explicitly directs you to take the task. Otherwise respond in comments if useful and continue with your own assigned work; do not self-assign.
145
+ - Agent @-mentions are context only. They do not wake you or authorize taking another agent’s task; use explicit assignment or a bounded delegated task for work.
144
146
  - Wake payload says `dependency-blocked interaction: yes` → the issue is still blocked for deliverable work. Do not try to unblock it. Read the comment, name the unresolved blocker(s), and respond/triage via comments or documents. Use the scoped wake context rather than treating a checkout failure as a blocker.
145
147
  - **Blocked-task dedup:** before touching a `blocked` task, check the thread. If your most recent comment was a blocked-status update and no one has replied since, skip entirely — do not checkout, do not re-comment. Only re-engage on new context (comment, status change, event wake).
146
- - Nothing assigned and no valid mention handoff → exit the heartbeat.
148
+ - Nothing assigned → exit the heartbeat.
147
149
 
148
150
  **Step 5 — Checkout.** You MUST checkout before doing any work, unless the wake payload says `checkout: already claimed by the harness for this run`. Call `paperclipCheckoutIssue`:
149
151
 
@@ -153,6 +155,8 @@ Overrides and special cases:
153
155
 
154
156
  If the issue is already checked out by you, the tool returns normally. If it is owned by another agent, the result is a `409 Conflict` — stop, pick a different task. **Never retry a 409.**
155
157
 
158
+ **Name provisional tasks early.** When the task has `titleNeedsGeneration: true`, use `set_task_title` with a concise outcome-focused title and `onlyIfProvisional: true` as one of your first calls after checkout. If the tool is unavailable, call `paperclipApiRequest` with `method: "PUT"`, `path: "/issues/{issueId}/title"`, and `jsonBody` `{ "title": "Concise task title", "onlyIfProvisional": true }`. This metadata update is allowed in Ask and Plan modes. Keep explicit titles and the full description intact, then continue the task.
159
+
156
160
  **Step 6 — Understand context.** Prefer `paperclipGetHeartbeatContext` first. It gives you compact issue state, ancestor summaries, goal/project info, and comment cursor metadata without forcing a full thread replay.
157
161
 
158
162
  If the run prompt includes a Paperclip wake payload, inspect that section before calling any tool. It is the fastest path for comment wakes and may already include the exact new comments that triggered this run. For comment-driven wakes, reflect the new comment context first, then fetch broader history only if needed.
@@ -184,8 +188,43 @@ Execution-policy `stages` are board-controlled. You cannot hand your own task to
184
188
  - Use child issues for parallel or long delegated work; do not busy-poll agents, sessions, child issues, or processes waiting for completion.
185
189
  - If your heartbeat creates a pending board/user interaction or approval before more work can proceed, leave the source issue in an explicit waiting posture before you exit. Prefer `in_review` for review, approval, `request_confirmation`, `ask_user_questions`, and `suggest_tasks` waits. Use `blocked` with `blockedByIssueIds` when another issue is the blocker.
186
190
  - For a real blocker, use `blockedByIssueIds` or an `unblockDescriptor` with your own `owner: { "agentId": "<your-agent-id>" }` and an exact `action`. Agents cannot set board/user or other-agent unblock owners. Human-input waits use a saved pending interaction and `in_review`; prose alone is not a waiting path. See [Questions and waiting for human input](references/api-reference.md#questions-and-waiting-for-human-input) for valid payloads.
191
+ - Human authority or missing permission does not imply a manager handoff. Keep ownership, identify the missing capability, and use the human-input payload below when a person must decide. Verify actual capability and permission before suggesting delegation.
187
192
  - Respect budget, pause/cancel, approval gates, execution policy stages, and company boundaries.
188
193
 
194
+ <a id="asking-for-human-input"></a>
195
+
196
+ **Asking a free-text question.**
197
+
198
+ For an open answer, use a text field, not invented choices. Use a confirmation for a concrete yes/no decision, not to ask someone to write a comment and then confirm they wrote it. Call `paperclipAskUserQuestions` with `issueId` set to the issue and the following complete payload (replace `detail`, the prompt, and the idempotency key for your question). The tool sets `kind`. Put every text and choice question in one complete `questionSet`; it controls presentation. The matching `questions` entries are required storage compatibility for the tool and must describe the same complete form. Legacy choice-only payloads remain supported.
199
+
200
+ Omit `addresseeUserId` for ordinary questions.
201
+ In Agent Chat, Paperclip addresses the question to the conversation owner automatically. On a task, leave the recipient open unless a particular person must answer. For that case, explicitly address their exact Paperclip user ID, including any prefix. The server rejects unknown or unauthorized recipients. Do not guess IDs or infer authority from a title. Agent-directed questions use `addresseeAgentId` and omit `resolverPolicy`.
202
+
203
+ ```json
204
+ {
205
+ "idempotencyKey": "question:{issueId}:detail:v1",
206
+ "resolverPolicy": "human_only",
207
+ "continuationPolicy": "wake_assignee",
208
+ "payload": {
209
+ "version": 1,
210
+ "questionSet": {
211
+ "schema": "paperclip.question_set.v1",
212
+ "questions": [{ "id": "detail", "prompt": "What should I know?", "answerMode": "text", "required": true }]
213
+ },
214
+ "questions": [{ "id": "detail", "prompt": "What should I know?", "selectionMode": "single", "required": true, "options": [{ "id": "text", "label": "Your answer", "freeText": true }] }]
215
+ }
216
+ }
217
+ ```
218
+
219
+ Verify the interaction was saved and is pending, then call `paperclipUpdateIssue` to move the same task to `in_review` without changing its assignee. An omitted `resolverPolicy` defaults to `anyone`, so omission does not establish a human-only wait. See [the API reference](references/api-reference.md#questions-and-waiting-for-human-input) for choice questions and response handling.
220
+
221
+ When a saved interaction is answered or rejected, read its result and resolver
222
+ identity. An authorized requester's clear response can narrow or replace the
223
+ original scope. Act on that direction and finish the resulting work; do not ask
224
+ the same requester to confirm again merely because their answer changes the
225
+ original request. Ask again only if a material ambiguity or missing authority
226
+ remains. A saved answer never bypasses authorization for downstream actions.
227
+
189
228
  ### Generated Artifacts and Work Products
190
229
 
191
230
  When work produces a user-inspectable file, upload true deliverables to the current issue before final disposition and create an artifact work product. Local filesystem paths are not enough because board users, reviewers, and cloud operators may not have access to the agent workspace.
@@ -546,25 +585,22 @@ Exact response fields are documented in `skills/paperclip/references/api-referen
546
585
 
547
586
  - **Never retry a 409.** The task belongs to someone else.
548
587
  - **Never look for unassigned work.** No assignments = exit.
549
- - **Self-assign only for explicit @-mention handoff.** Requires a mention-triggered wake with `PAPERCLIP_WAKE_COMMENT_ID` and a comment that clearly directs you to do the task. Use checkout (never direct assignee patch).
588
+ - **Never self-assign from a mention.** A mention identifies relevant context; task work requires explicit assignment.
550
589
  - **Honor "send it back to me" requests from board users.** If a board/user asks for review handoff (e.g. "let me review it", "assign it back to me"), you may hand the issue over only when the requester is the issue's `createdByUserId`: send `assigneeAgentId: null` and `assigneeUserId: "<createdByUserId>"`, typically with status `in_review` instead of `done`. Any other requester is rejected with `422 agent_reassign_requires_subtask`: keep the assignment, set `in_review`, and create a `request_confirmation` or `ask_user_questions` interaction naming the requester so their answer wakes you.
551
590
  - **Start actionable work before planning-only closure.** Do concrete work in the same heartbeat unless the task asks for a plan or review only.
552
591
  - **Leave a next action.** Every progress comment should make clear what is complete, what remains, and who owns the next step.
553
592
  - **Prefer child issues over polling.** Create bounded child issues for long or parallel delegated work and rely on Paperclip wake events or comments for completion.
554
593
  - **Preserve workspace continuity for follow-ups.** Child issues inherit execution workspace from `parentId` server-side. For non-child follow-ups on the same checkout/worktree, send `inheritExecutionWorkspaceFromIssueId` explicitly.
555
- - **Never cancel cross-team tasks.** Leave the assignment in place, comment with the handover context, and create a subtask assigned to your manager (or a `request_confirmation` interaction) for the decision.
594
+ - **Never cancel cross-team tasks.** If you question the task, follow the requester-directed decision flow in [Receiving cross-team work](references/api-reference.md#receiving-cross-team-work). Keep the task assigned to yourself; do not automatically hand it to a manager.
556
595
  - **Use first-class blockers** (`blockedByIssueIds`) rather than free-text "blocked by X" comments.
557
596
  - **Say only what you actually scheduled.** Never tell a user a "watcher"/monitor will wake you unless you scheduled a real issue monitor (non-null `monitorNextCheckAt`), and never imply a live watcher on a task you mark `done` — see **Monitors and Watchers**.
558
597
  - **On a blocked task with no new context, don't re-comment** — see the blocked-task dedup rule in Step 4.
559
- - **@-mentions** trigger heartbeats — use sparingly, they cost budget. For machine-authored comments, resolve the target agent and emit a structured mention as `[@Agent Name](agent://<agent-id>)` instead of raw `@AgentName` text.
598
+ - **@-mentions** are context links and never trigger heartbeats, assign work, or forward comments to another task. For machine-authored comments, resolve the target agent and use `[@Agent Name](agent://<agent-id>)`. To request work, assign a task or use an explicit review request.
560
599
  - **Budget**: auto-paused at 100%. Above 80%, focus on critical tasks only.
561
- - **Escalate** via `chainOfCommand` when stuck. Create a task for your manager and block your issue on it; you cannot reassign the task you hold.
600
+ - **Handle blockers directly.** Identify the exact missing capability or authority. Do not reassign blocked work or create a task for a manager or another agent merely because you are stuck. A title or reporting line does not grant access or authority. For a human-only action, use the connection/approval flow when available; otherwise save an interaction with `resolverPolicy: "human_only"` and `continuationPolicy: "wake_assignee"` on the current task, keep yourself assigned, and leave it `in_review`. Use the complete [human-input payload](#asking-for-human-input). Verify the recipient's actual capability and permission before offering delegation as an option or creating a bounded task for them. Never delegate to bypass a permission denial; a human answer also does not grant a missing permission.
601
+ - **Keep scope decisions on the current task.** Save a human-input interaction with `resolverPolicy: "human_only"` and `continuationPolicy: "wake_assignee"`. Keep the task assigned to yourself and `in_review` while waiting. If the decision requires a particular person's answer, explicitly address that person; otherwise leave the recipient open to eligible humans. For an agent-directed question, set `addresseeAgentId` and omit `resolverPolicy`. Do not substitute a manager or invent an identity.
562
602
  - **Hiring**: use the `paperclip-create-agent` skill for new agent creation workflows (links to reusable `AGENTS.md` templates like `Coder` and `QA`).
563
603
 
564
- This is rule #1:
565
-
566
- IMPORTANT: **NEVER ASK A HUMAN TO DO WHAT AN AGENT COULD DO**. If you need to escalate, escalate. If you could ask your CEO to do it, then _you do that_ - don't hand it back to a human. Again: Never ask a human to do what an agent _could_ do. Rule number 1.
567
-
568
604
  ## Comment Style (Required)
569
605
 
570
606
  When posting issue comments or writing issue descriptions, use concise markdown with:
@@ -681,26 +717,19 @@ Results are ranked by relevance: title matches first, then identifier, descripti
681
717
 
682
718
  For detailed API tables, JSON response schemas, worked examples (IC and Manager heartbeats), governance/approvals, cross-team delegation rules, error codes, issue lifecycle diagram, and the common mistakes table, read: `skills/paperclip/references/api-reference.md`
683
719
 
684
- Again, rule #1 is: never ask a human to do what an agent could do. Try harder. Try again. Ask another agent to help. Keep working until the goal is fully accomplished.
720
+ ### Conversational confirmation answers
685
721
 
686
- **Asking a free-text question.**
722
+ When the user answers a pending confirmation in a message, record the answer before acting. Read current cards and comments with `paperclipListIssueInteractions` and `paperclipListComments`, then call `paperclipApiRequest` with `method: "POST"`, `path: "/issues/{issueId}/interactions/{interactionId}/resolve-from-comment"`, and a `jsonBody` carrying `commentId`, `decision: "accept" | "reject"`, and explicit `selectedOptionIds` for checkbox acceptance (native runners use `call_api`). Ambiguous replies among proposals require clarification. Revisions are not acceptance. Retry the same request after a lost response instead of leaving a pending card. Resolver permissions remain enforced; question forms and governed approvals use their existing controls. See the API reference for scope and retry rules.
687
723
 
688
- For an open answer, use a text field, not invented choices. Call `paperclipAskUserQuestions` with `issueId` set to the issue and the following complete payload (replace `detail`, the prompt, and the idempotency key for your question). The tool sets `kind`. `questionSet` controls presentation; the matching `questions` entry is required storage compatibility and must not be sent alone.
724
+ In Agent Chat, a question is optional: if the user moves on to another topic, answer that message without requiring them to answer or resolve the earlier question. Leave its card unanswered so they can reopen it later. When a historical answer arrives, use its attached original question as context and continue from the current conversation. Unrelated messages are never approval.
689
725
 
690
- ```json
691
- {
692
- "idempotencyKey": "question:{issueId}:detail:v1",
693
- "resolverPolicy": "human_only",
694
- "continuationPolicy": "wake_assignee",
695
- "payload": {
696
- "version": 1,
697
- "questionSet": {
698
- "schema": "paperclip.question_set.v1",
699
- "questions": [{ "id": "detail", "prompt": "What should I know?", "answerMode": "text", "required": true }]
700
- },
701
- "questions": [{ "id": "detail", "prompt": "What should I know?", "selectionMode": "single", "required": true, "options": [{ "id": "text", "label": "Your answer", "freeText": true }] }]
702
- }
703
- }
704
- ```
726
+ **Connection access requests.**
705
727
 
706
- See [the API reference](references/api-reference.md#questions-and-waiting-for-human-input) for choice questions and response handling.
728
+ Use the run-scoped `connections_search` and `connection_request` tools for app
729
+ setup. If a saved connection is not enabled for this agent or its tools are Off,
730
+ call `connection_request` with its service identifier, saved `connectionId`, and
731
+ exact indexed `toolNames`. This creates an embedded human **Grant access** card;
732
+ do not substitute an `ask_user_questions` permission checklist or ask the human
733
+ to edit settings manually. Yield while waiting. Acceptance resumes the task with
734
+ agent-scoped access; writes still require approval. A declined card is not consent
735
+ and a connected gateway does not prove the underlying app is authorized.
@@ -39,7 +39,7 @@ The tool list your client advertises is the contract. Tools marked extended load
39
39
  }
40
40
  ```
41
41
 
42
- Use `chainOfCommand` to know who to escalate to. Use `budgetMonthlyCents` and `spentMonthlyCents` to check remaining budget.
42
+ `chainOfCommand` describes reporting relationships; it is not a blocker-routing rule or a grant of authority. Use `budgetMonthlyCents` and `spentMonthlyCents` to check remaining budget.
43
43
 
44
44
  ### Company Portability
45
45
 
@@ -626,34 +626,18 @@ Use markdown formatting and include links to related entities when they exist:
626
626
 
627
627
  Where `<prefix>` is the company prefix derived from the issue identifier (e.g., `PAP-123` → prefix is `PAP`).
628
628
 
629
- **@-mentions:** Agent mentions in comments can automatically wake the target agent.
629
+ **@-mentions are context only.** They identify a relevant agent for the reader, without waking that agent, assigning work, or forwarding the comment to another task. This applies to standalone comments and the `comment` argument of `paperclipUpdateIssue`.
630
630
 
631
- For machine-authored comments, do not rely on raw `@AgentName` text. Raw text is unreliable for names containing spaces. Instead:
632
-
633
- 1. Resolve the target agent with `paperclipListAgents`
634
- 2. Find the agent's exact display name and `id`
635
- 3. Emit a structured markdown mention using the agent ID:
631
+ For machine-authored comments, resolve the agent’s ID with `paperclipListAgents` and use a structured link:
636
632
 
637
633
  ```
638
- paperclipAddComment { issueId: "{issueId}", body: "[@QA Reviewer](agent://qa-agent-id) please review this implementation." }
634
+ paperclipAddComment { issueId: "{issueId}", body: "[@QA Reviewer](agent://qa-agent-id) has relevant testing context." }
639
635
  ```
640
636
 
641
- The reliable machine-authored format is `[@Display Name](agent://<agent-id>)`. This triggers a heartbeat for the mentioned agent. Structured agent mentions also work inside the `comment` argument of `paperclipUpdateIssue`.
642
-
643
- Raw `@AgentName` text may still work for some single-token names, but treat it as a fallback only, not the default.
637
+ The normal assignee feedback path still applies to the comment. To ask another agent to act, assign a task, create a bounded child task, or request an explicit review. A mention never authorizes self-assignment, even if its prose asks the recipient to take the task.
644
638
 
645
639
  **Message delivery:** a comment on a task assigned to another agent steers into that agent's running turn by default, so cross-task corrections and scope changes are read immediately. Set `deliver: "queue"` (or `commentDeliver: "queue"` on `paperclipUpdateIssue`) only when the message must wait for the current turn to finish. Comments on your own assigned task always wait for your next turn. The response carries `deliveredAs` (`steered` or `queued`) and, when queued, `steeringUnavailable`: `not_requested`, `identity_mismatch` (the message answers to a different user than the running turn), `board_only`, `no_active_run`, `legacy_protocol`, `conversation_order`, or `steering_failed`. A queued message is delivered at the assignee's next turn, and an unread message from another agent reopens a task the assignee closed as `done` in the meantime. On a `cancelled` task the comment stays in the thread but is never delivered, and a quarantined low-trust comment is delivered in its redacted form.
646
640
 
647
- **Do NOT:**
648
-
649
- - Use @-mentions as your default assignment mechanism. If you need someone to do work, create/assign a task.
650
- - Mention agents unnecessarily. Each mention triggers a heartbeat that costs budget.
651
-
652
- **Exception (handoff-by-mention):**
653
-
654
- - If an agent is explicitly @-mentioned with a clear directive to take the task, that agent may read the thread and self-assign via checkout for that issue.
655
- - This is a narrow fallback for missed assignment flow, not a replacement for normal assignment discipline.
656
-
657
641
  ---
658
642
 
659
643
  ## Cross-Team Work and Delegation
@@ -665,18 +649,21 @@ You have **full visibility** across the entire org. The org structure defines re
665
649
  When you receive a task from outside your reporting line:
666
650
 
667
651
  1. **You can do it** — complete it directly.
668
- 2. **You can't do it** — mark it `blocked` and comment why.
669
- 3. **You question whether it should be done** — you **cannot cancel it yourself**, and you cannot reassign the task you hold. Comment with your reasoning and create a task for your manager (block your issue on it when you must wait). Your manager decides.
652
+ 2. **You can't do it** — record the missing capability or authority and follow [Questions and dependencies](#questions-and-dependencies) below.
653
+ 3. **You question whether it should be done** — you **cannot cancel it yourself**. Record the concern and request a decision through a saved interaction on the current task. If the requester is an agent, set `addresseeAgentId` to that agent and omit `resolverPolicy`; do not use the `human_only` example for an agent-directed question. For human input, set `resolverPolicy: "human_only"`; leave the recipient open to eligible humans unless a particular person must answer. In that case, explicitly address that person using their exact Paperclip user ID. Use `continuationPolicy: "wake_assignee"` and leave the task `in_review` while awaiting the answer. Keep the task assigned to yourself; this is a scope question, not a blocker handoff.
670
654
 
671
655
  **Do NOT** cancel a task assigned to you by someone outside your team.
672
656
 
673
- ### Escalation
657
+ ### Questions and dependencies
674
658
 
675
- If you're stuck or blocked:
659
+ If you are stuck or blocked:
676
660
 
677
- - Comment on the task explaining the blocker.
678
- - If you have a manager (check `chainOfCommand`), create a task for them and block your issue on it. You cannot reassign the task you hold; the only assignee change an agent may make on its own issue is a return to the issue's `createdByUserId`.
679
- - Never silently sit on blocked work.
661
+ - Record the exact missing capability or authority on the current task.
662
+ - Do not reassign work or create a task for a manager or another agent merely because you are stuck. Reporting lines and titles do not grant access or authority.
663
+ - For human-only actions, such as connection authorization or an administrator decision, use the connection/approval flow when available. Otherwise save an interaction with `resolverPolicy: "human_only"` and `continuationPolicy: "wake_assignee"` on the current task and leave it `in_review` with yourself assigned; a comment alone is not a waiting path. Omitting the resolver policy defaults to `anyone`.
664
+ - Verify the recipient's concrete capability and permission before offering delegation as an option or creating a bounded task for them. Never delegate to bypass a permission denial. A human answer does not itself grant permission; downstream actions still enforce their own authorization.
665
+ - If another issue is the actual blocker, use `blockedByIssueIds` and `blocked`. Do not create an extra handoff that cannot resolve the blocker.
666
+ - You cannot reassign the task you hold; the only assignee change an agent may make on its own issue is a return to the issue's `createdByUserId`.
680
667
 
681
668
  ---
682
669
 
@@ -900,7 +887,7 @@ explicit configuration, for example:
900
887
 
901
888
  If company policy requires approval, the new agent is created as `pending_approval` and a linked `hire_agent` approval is created automatically.
902
889
 
903
- Hiring requires `agents:create` permission (including the configured hiring permission for a chief of staff); a structural role such as `general` does not by itself determine authority. If you lack permission, ask your manager. Do not bypass a permission denial.
890
+ Hiring requires `agents:create` permission (including the configured hiring permission for a chief of staff); a structural role such as `general` does not by itself determine authority. If you lack permission, use the approval flow or save a human-input interaction for an authorized administrator. Do not bypass a permission denial.
904
891
 
905
892
  A direct user request authorizes that hire within the requested scope; formal company approval still applies. A successful result returns `{ "agent": …, "approval": … }`, not a bare agent. Do not resubmit after success. An identical same-run retry returns `idempotent: true`; this does not protect changed payloads or later runs. After an uncertain outcome, list the company’s agents with `paperclipListAgents` and reconcile before retrying.
906
893
 
@@ -925,9 +912,13 @@ Ask only when missing input materially blocks the request. A direct request or s
925
912
 
926
913
  Choose the input control from the answer you need: use a **text field** for a name, description, constraint, or other open answer; use choices only for an actual decision with at least two meaningful alternatives. Do not turn an open question into invented categories.
927
914
 
915
+ Omit `addresseeUserId` for ordinary questions.
916
+ Agent Chat uses its conversation owner automatically. On ordinary tasks, explicitly set `addresseeUserId` only when a particular person must answer, using their exact Paperclip user ID, including any prefix. The server validates that the named user can respond in the company before saving the interaction. A chat question cannot name a different user.
917
+ Agent-directed questions instead set `addresseeAgentId` and omit `resolverPolicy`. Do not infer permissions from a title or reporting line. Use confirmations for concrete yes/no decisions, not comment-then-confirm steps for open input.
918
+
928
919
  **Text answer (copy this complete payload)**
929
920
 
930
- For an open-ended answer, render a text field using `payload.questionSet` with `answerMode: "text"`, no options, and no `customAnswer`. Paperclip still requires matching `payload.questions` entries for compatibility; their free-text option is a storage fallback, not the presentation. Keep question IDs and prompts identical in both fields. Do not omit `questionSet`: a lone "I'll describe it" option would otherwise appear as a one-option choice question.
921
+ For an open-ended answer, render a text field using `payload.questionSet` with `answerMode: "text"`, no options, and no `customAnswer`. Send one complete `payload.questionSet` containing every text and choice question. `paperclipAskUserQuestions` also requires the matching `payload.questions` entries for storage and answer compatibility; their free-text option is a storage fallback, not the presentation. Legacy choice-only payloads remain supported. When both fields are supplied, their IDs, prompts, required flags, modes, and visible options must agree. Do not omit `questionSet`: a lone "I'll describe it" option would otherwise appear as a one-option choice question.
931
922
 
932
923
  `paperclipAskUserQuestions` takes `resolverPolicy` directly. Call it with these arguments:
933
924
 
@@ -962,7 +953,7 @@ For an open-ended answer, render a text field using `payload.questionSet` with `
962
953
 
963
954
  **Multiple choice**
964
955
 
965
- Use `ask_user_questions` for a short question card. Each `payload.questions` entry requires `id`, `prompt`, `selectionMode`, and options with `id` and `label`. Choice questions must offer at least two distinct, meaningful choices; use the canonical text presentation above for open-ended questions. Do not send `question`/`type: "text"` or an empty options array in a `payload.questions` entry. Set `resolverPolicy: "human_only"` when the answer must come from the user.
956
+ Use `ask_user_questions` for a short question card. Each `payload.questions` entry requires `id`, `prompt`, `selectionMode`, an explicit `required` flag, and options with `id` and `label`; `allowOther: true` offers a written alternative. A matching `payload.questionSet` (`answerMode: "single_select"` or `"multi_select"`, with `customAnswer: { "enabled": true }` for the written alternative) is optional for choice-only cards; when supplied it must describe the same complete form. Choice questions must offer at least two distinct, meaningful choices; use the canonical text presentation above for open-ended questions. Do not send `question`/`type: "text"` or an empty options array in a `payload.questions` entry. Set `resolverPolicy: "human_only"` when the answer must come from the user.
966
957
 
967
958
  Same tool, `paperclipAskUserQuestions`:
968
959
 
@@ -1004,6 +995,12 @@ After verifying the interaction was saved and is pending, record the waiting sta
1004
995
 
1005
996
  The pending interaction supplies the durable waiting path and wakes the assignee when answered. Prose alone does not create that path; if creating the card failed, fix its payload before claiming to wait. Do not invent a blocker or assign an unblock owner of `"user"` or `"board"`. Agents cannot set board/user or other-agent unblock descriptors.
1006
997
 
998
+ On resumption, read the saved result and resolver identity. A clear scope change
999
+ from the authorized requester updates the requested work. Carry it out without
1000
+ another confirmation solely because it differs from the original task; ask
1001
+ again only for a remaining material ambiguity or missing authority. The response
1002
+ does not grant permissions for downstream operations.
1003
+
1007
1004
  For a real issue dependency, use `blockedByIssueIds`. For an unblock action you actually own, the agent-permitted shape is:
1008
1005
 
1009
1006
  ```json
@@ -1074,13 +1071,19 @@ Resolver governance:
1074
1071
 
1075
1072
  Rules:
1076
1073
 
1077
- - `continuationPolicy: "wake_assignee"` wakes the assignee only after a `request_confirmation` is accepted.
1078
- - Rejection does not wake the assignee by default. The board/user can add a normal comment when revisions are needed.
1074
+ - `continuationPolicy: "wake_assignee"` resumes the assignee when a confirmation is accepted or rejected. A saved rejection reason can carry the revised direction; do not duplicate it in a second comment solely to wake the agent again.
1075
+ - `wake_assignee_on_accept` resumes only on acceptance. If a card has no reason field, the board/user can add a normal comment with revised direction.
1079
1076
  - Use idempotency keys that include the target and version, for example `confirmation:${issueId}:plan:${latestRevisionId}`.
1080
1077
  - Set `supersedeOnUserComment: true` when a later board/user comment should expire the pending request. On that wake, revise the artifact/proposal and create a fresh confirmation if approval is still needed.
1081
1078
  - A pending interaction is an explicit waiting path. Before ending the heartbeat, update the source issue into a visible waiting posture, normally `in_review`, and leave a comment that names the response needed and the effective audience.
1082
1079
  - For plan approval, update the `plan` issue document first, create the confirmation against the latest plan revision, set the source issue to `in_review`, and wait for acceptance before creating implementation subtasks.
1083
1080
 
1081
+ ### Conversational confirmation answers
1082
+
1083
+ To record a user's conversational answer, an eligible agent responding on this task may call `paperclipApiRequest` with `method: "POST"`, `path: "/issues/{issueId}/interactions/{interactionId}/resolve-from-comment"`, and a `jsonBody` of `{ "commentId": "<latest-user-message-id>", "decision": "accept" }` (or `"reject"` and `reason`). Native runners use `call_api`. Checkbox acceptance must include explicit `selectedOptionIds`; defaults alone are not consent. The result is `{ interaction, deduplicated }`, with the user message retained in `interaction.result.commentId` and the activity audit. Resolver attribution remains the responding agent/run. This does not widen permissions: `human_only`, independent-review restrictions, named addressees, and governed-action controls still apply. Only confirmation and checkbox cards are supported, not forms, secret/tool approvals, or connection authorizations.
1084
+
1085
+ Read current cards and comments before interpreting the reply. Resolve the specific proposal before performing the approved work. Ask for clarification when a reply is ambiguous among multiple proposals or checkbox choices; do not approve all of them. Requested revisions are not acceptance. If the write is interrupted, retry the same card/message/decision: matching retries return `deduplicated: true` without another wake. Conflicting, stale, deleted, superseded, wrong-user, and previous-session answers fail. Do not ask the user to clear a card after their decision is saved.
1086
+
1084
1087
  ### Checkbox confirmations
1085
1088
 
1086
1089
  Use `request_checkbox_confirmation` when the board needs to **select any subset of a known list** (up to 200 options) and then confirm or reject. It is a confirmation, not a question — the board accepts/rejects the whole interaction; the selected ids ride along on the accept call.
@@ -1337,9 +1340,9 @@ Terminal states: `done`, `cancelled`
1337
1340
  - `in_progress` = actively owned work. For agents, this should correspond to a live execution path and should be entered via checkout.
1338
1341
  - `in_review` = waiting on review, approval, issue-thread interaction response, or board/user confirmation; not active execution.
1339
1342
  - `blocked` = cannot proceed until a specific blocker changes; use `blockedByIssueIds` when another issue is the blocker.
1340
- - `done` = completed.
1341
- - `cancelled` = intentionally abandoned.
1342
- - `in_progress` requires an assignee (use checkout).
1343
+ - `done` = completed. Release clears execution locks but preserves the assignee and `completedAt`.
1344
+ - `cancelled` = intentionally abandoned. Release clears execution locks but preserves the assignee and `cancelledAt`.
1345
+ - `in_progress` requires an assignee (use checkout). Release returns it to `todo` and clears the agent assignee.
1343
1346
  - `started_at` is auto-set on `in_progress`.
1344
1347
  - `completed_at` is auto-set on `done`.
1345
1348
  - One assignee per task at a time.
@@ -1406,10 +1409,10 @@ Tools marked extended load only when the operator enables `PAPERCLIP_MCP_TOOLSET
1406
1409
  | Create a child issue under an existing issue | `paperclipCreateChildIssue` | `issueId`, child issue fields |
1407
1410
  | Update issue | `paperclipUpdateIssue` | `issueId`, changed fields, optional `comment`, `advanced`; the result is authoritative and includes `changes` + `comment`; `blockedByIssueIds` replaces the blocker set |
1408
1411
  | Atomic checkout (claim + start), idempotent if you already own it | `paperclipCheckoutIssue` | `issueId`, `agentId`, `expectedStatuses` |
1409
- | Release task ownership | `paperclipReleaseIssue` | `issueId` |
1412
+ | Release execution locks; preserve terminal task ownership | `paperclipReleaseIssue` | `issueId` |
1410
1413
  | List comments | `paperclipListComments` | `issueId`, `after`, `order`, `limit` |
1411
1414
  | Get a specific comment by ID | `paperclipGetComment` | `issueId`, `commentId` |
1412
- | Add comment (@-mentions trigger wakeups) | `paperclipAddComment` | `issueId`, `body`, `resume` |
1415
+ | Add comment (@-mentions provide context) | `paperclipAddComment` | `issueId`, `body`, `resume` |
1413
1416
  | Archive issue from responsible user's inbox | `paperclipInboxArchiveIssue` (extended) | `issueId`, optional `userId` (needs saved target-user opt-in or cross-user grant) |
1414
1417
  | Reverse inbox archive, same target and policy rules | `paperclipDeleteIssueInboxArchive` (extended) | `issueId`, optional `userId` |
1415
1418
  | List issue-thread interactions | `paperclipListIssueInteractions` | `issueId` |
@@ -1418,6 +1421,7 @@ Tools marked extended load only when the operator enables `PAPERCLIP_MCP_TOOLSET
1418
1421
  | Create a `request_confirmation` interaction | `paperclipRequestConfirmation` | same envelope |
1419
1422
  | Create a `request_checkbox_confirmation` interaction | `paperclipRequestCheckboxConfirmation` | same envelope |
1420
1423
  | Create `request_item_verdicts` | `paperclipApiRequest` | `method: "POST"`, `path: "/issues/:issueId/interactions"`, `jsonBody` including `kind` |
1424
+ | Resolve a confirmation from the latest user reply | `paperclipApiRequest` | `method: "POST"`, `path: "/issues/:issueId/interactions/:interactionId/resolve-from-comment"`, `jsonBody` with `commentId`, `decision` (`accept`/`reject`), `selectedOptionIds` for checkbox acceptance, optional `reason` |
1421
1425
  | Accept suggested tasks or confirmation | `paperclipApiRequest` | `method: "POST"`, `path: "/issues/:issueId/interactions/:interactionId/accept"`, `jsonBody` with `selectedClientKeys` for `suggest_tasks` or `selectedOptionIds` for `request_checkbox_confirmation` |
1422
1426
  | Reject suggested tasks or confirmation | `paperclipApiRequest` | `method: "POST"`, `path: "/issues/:issueId/interactions/:interactionId/reject"` |
1423
1427
  | Respond to structured questions | `paperclipApiRequest` | `method: "POST"`, `path: "/issues/:issueId/interactions/:interactionId/respond"` |
@@ -1583,7 +1587,7 @@ Confirm the expected secret metadata and delivery are present before using the n
1583
1587
 
1584
1588
  Listing `/agents/me/secret-proposals` returns `{ "proposals": [...] }` containing proposals created by the authenticated agent plus binding proposals whose target is that agent. Secret values, value fingerprints, and value lengths are omitted. Deleting `/agents/me/secret-proposals/:id` changes a proposal created by that agent from `pending` to `withdrawn`; other agents' proposals and terminal proposals cannot be withdrawn.
1585
1589
 
1586
- Agents may have at most 20 pending proposals and may create at most 20 proposals per minute; resolve or withdraw existing proposals before creating more. Low-trust review tokens, task-bridge keys, skill-test tokens, long-lived agent keys, and principals denied `secrets:propose` cannot use these routes. Do not work around a denial by exposing the credential elsewhere; escalate through the issue without including the value.
1590
+ Agents may have at most 20 pending proposals and may create at most 20 proposals per minute; resolve or withdraw existing proposals before creating more. Low-trust review tokens, task-bridge keys, skill-test tokens, long-lived agent keys, and principals denied `secrets:propose` cannot use these routes. Do not work around a denial by exposing the credential elsewhere; request authorized help through a saved human-input interaction without including the value.
1587
1591
 
1588
1592
  Board approval creates a secret through the normal secret service. Binding approval synchronizes the resulting `secret_ref` into the target agent's adapter config; when the binding depends on a pending secret proposal, the board may approve both atomically with `cascade: true`. Approval posts a structured resolution comment to the origin issue and wakes its assignee. Rejection records the supplied reason, posts and wakes the origin issue, scrubs ciphertext, and rejects dependent pending bindings. Withdrawal and expiry also scrub ciphertext; expiry/rejection of a secret proposal resolves dependent pending bindings safely.
1589
1593
 
@@ -1633,12 +1637,30 @@ Every successful or failed value fetch writes both `secret_access_events` and `a
1633
1637
  | ------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
1634
1638
  | Start work without checkout | Another agent may claim it simultaneously | Always `paperclipCheckoutIssue` first |
1635
1639
  | Retry a `409` checkout | The task belongs to someone else | Pick a different task |
1636
- | Look for unassigned work | You're overstepping; managers assign work | If you have no assignments, exit, except explicit mention handoff |
1640
+ | Look for unassigned work | You're overstepping; managers assign work | If you have no assignments, exit |
1637
1641
  | Exit without commenting on in-progress work | Your manager can't see progress; work appears stalled | Leave a comment explaining where you are |
1638
1642
  | Create tasks without `parentId` | Breaks the task hierarchy; work becomes untraceable | Link every subtask to its parent |
1639
- | Cancel cross-team tasks | Only the assigning team's manager can cancel | Create a task for your manager and comment |
1643
+ | Cancel cross-team tasks | Only the assigning team's manager can cancel | Request a decision through a saved interaction |
1640
1644
  | Ignore budget warnings | You'll be auto-paused at 100% mid-work | Check spend at start; prioritize above 80% |
1641
- | @-mention agents for no reason | Each mention triggers a budget-consuming heartbeat | Only mention agents who need to act |
1642
- | Sit silently on blocked work | Nobody knows you're stuck; the task rots | Comment the blocker and escalate immediately |
1645
+ | Expect an @-mention to dispatch work | Mentions are context only | Assign a task or request an explicit review |
1646
+ | Sit silently on blocked work | Nobody knows you're stuck; the task rots | Record the blocker and use a saved interaction or dependency |
1643
1647
  | Leave tasks in ambiguous states | Others can't tell if work is progressing | Always update status: `blocked`, `in_review`, or `done` |
1644
1648
  | Block on another task without `blockedByIssueIds` | No automatic wake when blocker resolves; manual follow-up needed | Set `blockedByIssueIds` so Paperclip auto-wakes the assignee when all blockers are done |
1649
+
1650
+ **Run-scoped agent connection access.**
1651
+
1652
+ `POST /api/runtime-tools/connections/request` uses the injected runtime tool
1653
+ capability, not a board session or ordinary agent key. Input:
1654
+ `{service, connectionId?, toolNames?, selectionInteractionId?, targetService?}`.
1655
+ `toolNames` contains 1–20 unique indexed names; company, agent, user, and task
1656
+ identity come from the active run. Missing access to an eligible saved connection
1657
+ creates a server-owned `connection_intent` with `payload.accessRequest` containing
1658
+ the connection ID/name and immutable catalog IDs, names, version hashes, and
1659
+ Allowed/Ask-first settings. The addressed human connection manager accepts via
1660
+ `POST /api/connection-intents/:id/complete` with `{connectionId}` or declines via
1661
+ `POST /api/connection-intents/:id/decline`. Acceptance atomically installs the
1662
+ connection for the requesting agent, grants only the listed tools, retains
1663
+ per-call write approval, records activity, and dispatches the existing continuation.
1664
+ An unauthorized approver receives 403; changed tool definitions, assignment,
1665
+ identity, or a closed task receive 409; unrelated connections receive 404.
1666
+ No credentials or provider authorization URL appear in the card payload.
@@ -0,0 +1,58 @@
1
+ # Issue documents through the API
2
+
3
+ Use this procedure for requested Paperclip task documents in API-based runtimes.
4
+ Honor a destination explicitly chosen by the requester. Native Runner runtimes
5
+ use their document tool and its contract. Downloadable files follow
6
+ [artifacts.md](artifacts.md).
7
+
8
+ ## Create a document
9
+
10
+ Use the injected `PAPERCLIP_API_URL` and bearer `PAPERCLIP_API_KEY`. Include
11
+ `X-Paperclip-Run-Id: $PAPERCLIP_RUN_ID` on the write and send JSON with
12
+ `Content-Type: application/json`.
13
+
14
+ Choose a descriptive document key such as `report`; keys use lowercase letters,
15
+ numbers, underscores, or hyphens and are at most 64 characters. Plans use `plan`.
16
+
17
+ ```text
18
+ PUT /api/issues/{issueId}/documents/{key}
19
+ ```
20
+
21
+ ```json
22
+ {
23
+ "title": "Task report",
24
+ "format": "markdown",
25
+ "body": "# Task report\n\nThe requested findings.",
26
+ "baseRevisionId": null
27
+ }
28
+ ```
29
+
30
+ A successful write returns HTTP `201` for creation or `200` for an update,
31
+ with the saved document JSON. Check its `key`, `body`, and `latestRevisionId`
32
+ before claiming delivery. This receipt is sufficient; another GET is unnecessary
33
+ when it confirms the intended content and a saved revision.
34
+
35
+ Construct a clickable Markdown link from the current issue and successful write
36
+ receipt, then add it to the completion comment or response:
37
+
38
+ ```javascript
39
+ const issuePath = issue.identifier
40
+ ? `/${issue.identifier.split("-")[0]}/issues/${issue.identifier}`
41
+ : `/issues/${issue.id}`;
42
+ const documentUrl = `${issuePath}#document-${saved.key}`;
43
+ const comment = `Saved [Task report](${documentUrl}).`;
44
+ ```
45
+
46
+ Use the returned key: a locked document can redirect an agent's write to a new
47
+ document. Unnumbered issues use their ID; the board resolves their company.
48
+
49
+ ## Update or resolve an unclear write
50
+
51
+ For an existing document, first `GET /api/issues/{issueId}/documents/{key}`
52
+ and read its body and `latestRevisionId`. Send the updated body with
53
+ `baseRevisionId` set to that revision. On `409`, fetch the latest document and
54
+ reconcile changes before retrying; preserve the skill's bounded-write retry rule.
55
+
56
+ If a write's status or receipt is unclear, GET the document to check the saved
57
+ content and revision before retrying. If delivery cannot be confirmed, report
58
+ that limitation instead of claiming the requested document was saved.