## TL;DR

An approver has the report open, so the agent's write is rejected. Check the lock before writing, queue the findings, and retry with backoff; never lose findings because a report was temporarily locked.

## Error

```text
agent failed to write findings back: report locked by another approver
```

## Steps

1. Before writing, check whether the report is locked and by whom. Expected: you know the lock holder.
2. If locked, save the findings to the agent's queue with the report ID and timestamp. Expected: no findings are lost.
3. Retry the write with exponential backoff (minutes, not seconds; approvers hold locks for a while). Expected: the write lands when the lock releases.
4. After a successful write, verify the findings appear on the report. Expected: the audit comments or flags are visible.
5. Set a maximum retry window (for example, 24 hours); after that, notify a human instead of retrying forever. Expected: stuck writes escalate instead of spinning.

## When to use

- An agent's write-back fails because the report is locked.
- Findings must not be lost when a write is rejected.

## When not to use

- The write fails with permission denied (a credentials or role problem).
- The report was deleted (nothing to write to).

## Tool compatibility

- Expensify, Concur report-locking behavior; custom agent write-back.

## Variant phrasings

### Report locked, cannot save findings

Same failure, shorter wording.

### Write rejected: report in use

The concurrency phrasing of the same lock.

## Why it happens

Expense tools lock reports during human review to prevent conflicting edits. An agent writing on its own schedule collides with those locks; queued retries bridge the timing gap.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_uPnJuj8O7opyQOLz3dnC6Q
