{"record":{"id":"590a09892a7fa5d7","repo":"paperclipai/paperclip","slug":"low-trust-actors-cannot-promote-quarantined-output","errorCode":null,"errorMessage":"Low-trust actors cannot promote quarantined output","messagePattern":"Low-trust actors cannot promote quarantined output","errorType":"http","errorClass":null,"httpStatus":403,"severity":"error","filePath":"server/src/routes/issues.ts","lineNumber":8256,"sourceCode":"        nextRevisionNumber: doc.latestRevisionNumber,\n        nextBody: doc.body,\n      });\n\n    await logActivity(db, {\n      companyId: issue.companyId,\n      actorType: actor.actorType,\n      actorId: actor.actorId,\n      agentId: actor.agentId,\n      runId: actor.runId,\n      agentApiKeyId: actor.agentApiKeyId,\n      action: result.created ? \"issue.document_created\" : \"issue.document_updated\",\n      entityType: \"issue\",\n      entityId: issue.id,\n      details: {\n        key: doc.key,\n        documentId: doc.id,\n        title: doc.title,\n        format: doc.format,\n        revisionNumber: doc.latestRevisionNumber,\n        redirectedFromLockedDocument,\n        ...summarizeIssueReferenceActivityDetails({\n          addedReferencedIssues: referenceDiff.addedReferencedIssues.map(summarizeIssueRelationForActivity),\n          removedReferencedIssues: referenceDiff.removedReferencedIssues.map(summarizeIssueRelationForActivity),\n          currentReferencedIssues: referenceDiff.currentReferencedIssues.map(summarizeIssueRelationForActivity),\n        }),\n      },\n    });\n\n    for (const remap of remappedAnnotations) {\n      await logActivity(db, {\n        companyId: issue.companyId,\n        actorType: actor.actorType,\n        actorId: actor.actorId,\n        agentId: actor.agentId,\n        runId: actor.runId,\n        agentApiKeyId: actor.agentApiKeyId,","sourceCodeStart":8238,"sourceCodeEnd":8274,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/routes/issues.ts#L8238-L8274","documentation":"403 guard on POST /issues/:id/low-trust/promotions. Fires when the actor itself computes as low-trust (sourceTrustForActorWrite true): a low-trust actor may not promote anything, including its own quarantined output; promotion must be done by a trusted actor.","triggerScenarios":"Thrown at server/src/routes/issues.ts:7669 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["This is an authorization rule, not a bug: perform the action with an actor that satisfies the stated constraint (board user, the owning agent, or an in-scope resource).","If access should be allowed, verify the actor's credentials/company scope and the resource's ownership before retrying."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}