makeplane / makeplane/plane

[bug]: API allows archiving non-completed/non-canceled work items by PATCHing archived_at

Open
#9,115 1 comment 1 reaction 2 assignees View on GitHub

@vihar is already working on this.

Since May 22, 2026.

🐛bug plane
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

  1. Create a work item.
  2. Keep the work item in a non-completed and non-canceled state, such as Todo or In Progress.
  3. Open the work item in the Web UI and check the archive action.
  4. The Web UI indicates that only completed or canceled work items can be archived.
  5. 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_at to 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

  1. Create a work item.
  2. Keep the work item in a non-completed and non-canceled state, such as Todo or In Progress.
  3. Open the work item in the Web UI and check the archive action.
  4. The Web UI indicates that only completed or canceled work items can be archived.
  5. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.