[Bug] GET endpoints mutate state across logout, refresh, content, deletion flows and others #18397

Closed
opened 2026-02-21 19:47:10 -05:00 by yindo · 0 comments
Owner

Originally created by @laipz8200 on GitHub (Sep 28, 2025).

Originally assigned to: @laipz8200 on GitHub.

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues, including closed ones.
  • I confirm that I am using English to submit this report.
  • 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

main (latest)

Cloud or Self Hosted

  • Self Hosted (Source)

Steps to reproduce

  1. Call GET /console/api/logout while authenticated; the request signs the user out.
  2. Call GET /console/api/apps/{app_id}/server/refresh; the server code rotates on every GET.
  3. Call GET /console/api/messages/{message_id}/more-like-this (or the installed-app equivalent); each GET triggers a fresh generation.
  4. Call GET /console/api/messages/{message_id}/suggested-questions; the response is recomputed with side effects.
  5. Call GET /console/api/account/delete/verify; a new deletion token/code is issued and emailed on every GET.

✔️ Expected Behavior

Stateful workflows such as logout, server refresh, content generation, suggested-question generation, and account deletion verification should require POST (or another non-idempotent verb) so GET remains safe and cacheable.

Actual Behavior

The listed GET endpoints all mutate state—logging users out, rotating credentials, generating new content, or sending account-deletion emails—making them unsafe to call from link previews, crawlers, or cached contexts.

Originally created by @laipz8200 on GitHub (Sep 28, 2025). Originally assigned to: @laipz8200 on GitHub. ### Self Checks - [x] I have read the Contributing Guide and Language Policy. - [x] This is only for bug report, if you would like to ask a question, please head to Discussions. - [x] I have searched for existing issues, including closed ones. - [x] I confirm that I am using English to submit this report. - [x] 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :) - [x] Please do not modify this template :) and fill in all the required fields. ### Dify version main (latest) ### Cloud or Self Hosted - Self Hosted (Source) ### Steps to reproduce 1. Call `GET /console/api/logout` while authenticated; the request signs the user out. 2. Call `GET /console/api/apps/{app_id}/server/refresh`; the server code rotates on every GET. 3. Call `GET /console/api/messages/{message_id}/more-like-this` (or the installed-app equivalent); each GET triggers a fresh generation. 4. Call `GET /console/api/messages/{message_id}/suggested-questions`; the response is recomputed with side effects. 5. Call `GET /console/api/account/delete/verify`; a new deletion token/code is issued and emailed on every GET. ### ✔️ Expected Behavior Stateful workflows such as logout, server refresh, content generation, suggested-question generation, and account deletion verification should require POST (or another non-idempotent verb) so GET remains safe and cacheable. ### ❌ Actual Behavior The listed GET endpoints all mutate state—logging users out, rotating credentials, generating new content, or sending account-deletion emails—making them unsafe to call from link previews, crawlers, or cached contexts.
yindo added the 🐞 bug label 2026-02-21 19:47:10 -05:00
yindo closed this issue 2026-02-21 19:47:10 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#18397