invoke-ai/InvokeAI · warning · HTTPException
You do not have permission to delete this queue item
Error message
You do not have permission to delete this queue item
What it means
HTTPException(403) raised in DELETE /session_queue/{queue_id}/i/{item_id} when the authenticated user is neither the owner of the queue item chain's root item nor an admin. Authorization is deliberately based on the root owner because the delete removes the entire workflow-call chain.
Solutions
- Have an admin perform the delete, or log in as the user who owns the root queue item
- If the token should own the items, re-enqueue using the intended user's credentials
- Ask the server admin to grant admin rights if this account legitimately needs to manage all queue items
Example fix
// before: delete as wrong user -> 403
await api.delete(`/api/v1/session_queue/${queueId}/i/${itemId}`)
// after: check ownership client-side first
if (rootItem.user_id !== currentUser.id && !currentUser.is_admin) {
throw new Error('Not permitted; ask an admin or the owner')
} Defensive patterns
Strategy: validation
Validate before calling
// check ownership before attempting delete
const item = await api.get(`/api/v1/session_queue/${queueId}/i/${itemId}`)
if (item.data.user_id !== currentUser.id && !currentUser.is_admin) {
throw new Error('Only the owner or an admin can delete this queue item')
} Type guard
function canDelete(item, currentUser) {
return currentUser?.is_admin === true || item?.user_id === currentUser?.id
} Try / catch
try {
await api.delete(`/api/v1/session_queue/${queueId}/i/${itemId}`)
} catch (e) {
if (e.response?.status === 403) {
notify('You lack permission to delete this item; ask an admin or the owner')
} else throw e
} Prevention
- Authenticate with the same user that enqueued the items you manage
- In multi-user deployments, route admin actions through an admin account
- Surface ownership info (user_id) in your UI before offering delete
When it happens
Trigger: A non-admin user calling DELETE on a queue item whose root_queue_item.user_id differs from their own user_id — e.g. deleting another user's queued generation in a shared/multi-user InvokeAI deployment.
Common situations: Multi-user setups where users share queue visibility but not delete rights; service accounts or API tokens running as a different user than the one who enqueued the item; sessions switching users while a UI keeps old items loaded.
Understand the failure class
Background: "You do not have permission" / 403 Forbidden errors: authenticated but not allowed — causes and fixes across open-source libraries — this error's family across 31 libraries.
Related errors
- Not authorized to access this board
- Not authorized to access this download
- Not authorized to access this style preset
- Not authorized to access this system prompt
- Not authorized to delete this system prompt
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/d2b55eff2cdbadfb.
Report an issue: GitHub.
Appendix: source
Thrown at invokeai/app/api/routers/session_queue.py:604
def delete_queue_item(
current_user: CurrentUserOrDefault,
queue_id: str = Path(description="The queue id to perform this operation on"),
item_id: int = Path(description="The queue item to delete"),
) -> None:
"""Deletes a queue item. Users can only delete their own items unless they are an admin."""
try:
# Get the queue item to check ownership
queue_item = ApiDependencies.invoker.services.session_queue.get_queue_item(item_id)
if queue_item.queue_id != queue_id:
raise HTTPException(status_code=404, detail=f"Queue item with id {item_id} not found in queue {queue_id}")
root_queue_item = _get_workflow_call_root_queue_item(queue_item)
if root_queue_item.queue_id != queue_id:
raise HTTPException(status_code=404, detail=f"Queue item with id {item_id} not found in queue {queue_id}")
# The queue service deletes the entire chain, so authorization must use the root owner.
if root_queue_item.user_id != current_user.user_id and not current_user.is_admin:
raise HTTPException(status_code=403, detail="You do not have permission to delete this queue item")
ApiDependencies.invoker.services.session_queue.delete_queue_item(item_id)
except SessionQueueItemNotFoundError:
raise HTTPException(status_code=404, detail=f"Queue item with id {item_id} not found in queue {queue_id}")
except HTTPException:
raise
except Exception as e:
raise HTTPException(status_code=500, detail=f"Unexpected error while deleting queue item: {e}")
@session_queue_router.put(
"/{queue_id}/i/{item_id}/cancel",
operation_id="cancel_queue_item",
responses={
200: {"model": SessionQueueItem},
},
)
def cancel_queue_item(View on GitHub (pinned to 0b6a024f2f)