[bug]: API allows archiving non-completed/non-canceled work items by PATCHing archived_at
@vihar is already working on this.
Since May 22, 2026.
- Dominant language
- TypeScript
- Stars
- 59.6k
- Forks
- 5.8k
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 49
Description
Is there an existing issue for this?
- I have searched the existing issues
Current behavior
API Allows Archiving a Non-completed Work Item by Updating archived_at
Environment
- Plane version: v1.3.0
- Deployment: self-hosted
- API path tested:
/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/
Summary
We observed a behavior difference between the Plane Web UI and the API when archiving a work item.
In the Web UI, the archive action shows the following message for a work item that is not completed or canceled:
Only completed or canceled work items can be archived
However, using the API, we were able to archive a work item that was still in a non-completed state by updating the archived_at field directly.
We would like to confirm whether this is expected behavior or a bug.
Steps to Reproduce
- Create a work item.
- Keep the work item in a non-completed and non-canceled state, such as
TodoorIn Progress. - Open the work item in the Web UI and check the archive action.
- The Web UI indicates that only completed or canceled work items can be archived.
- Send a PATCH request to the work item API:
curl -X PATCH \
"$PLANE_HOST/api/v1/workspaces/$WORKSPACE_SLUG/projects/$PROJECT_ID/work-items/$WORK_ITEM_ID/" \
-H "x-api-key: $PLANE_API_KEY" \
-H "content-type: application/json" \
-d '{"archived_at":"2026-05-22"}'
Observed Result
The API request returned 200 OK.
The work item was archived even though it was not in a completed or canceled state.
Expected Clarification
Could the Plane team confirm which behavior is expected?
- Should the API allow
archived_atto be updated directly regardless of the current work item state? - Or should the API follow the same rule shown in the Web UI, where only completed or canceled work items can be archived?
Additional Observation
We also tried the following path:
POST /api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/archive/
It returned:
{"error": "Page not found."}
So the behavior described above was observed through PATCHing archived_at on the work item resource.
Steps to reproduce
Steps to Reproduce
- Create a work item.
- Keep the work item in a non-completed and non-canceled state, such as
TodoorIn Progress. - Open the work item in the Web UI and check the archive action.
- The Web UI indicates that only completed or canceled work items can be archived.
- Send a PATCH request to the work item API:
curl -X PATCH \
"$PLANE_HOST/api/v1/workspaces/$WORKSPACE_SLUG/projects/$PROJECT_ID/work-items/$WORK_ITEM_ID/" \
-H "x-api-key: $PLANE_API_KEY" \
-H "content-type: application/json" \
-d '{"archived_at":"2026-05-22"}'
Observed Result
The API request returned 200 OK.
The work item was archived even though it was not in a completed or canceled state.
Environment
Production
Browser
Google Chrome
Variant
Local
Version
v1.30.0
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.