nextcloud / nextcloud/server

Improve app password handling: prefer copy-only over plain-text display

Open
#59,420 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage enhancement
Dominant language
PHP
Stars
36.9k
Forks
5.2k
Avg merge
2d 3h
Merged PRs (30d)
713

Description

Hi,

When generating a new app password in Nextcloud, the password is displayed in plain text immediately after creation.

While convenient, this encourages users to visually read or manually transcribe the credential, which increases the risk of accidental exposure (e.g., during screen sharing, shoulder surfing, or screenshots).

Suggested improvement (copy-first / copy-only workflow)

A more secure UX pattern would be to avoid displaying the password in readable plain text by default and instead:

  • Provide a "Copy to clipboard" button as the primary interaction
  • Avoid showing the password unless the user explicitly requests it
  • Optionally include a "Reveal" action behind an additional user interaction

This approach promotes better handling of long-lived app passwords by:

  • Reducing unnecessary visual exposure
  • Encouraging copy/paste instead of manual transcription
  • Aligning with modern best practices for credential handling
Expected behavior
  • The generated app password is not directly visible after creation
  • Users copy it via an explicit action (e.g., "Copy" button)
  • Optional reveal is secondary and requires deliberate user intent
Actual behavior
  • The generated app password is displayed in plain text immediately
  • No copy-first or copy-only workflow is enforced
Impact

This is not a direct vulnerability, but a defense-in-depth and security UX improvement. Adopting a copy-first approach would reduce the likelihood of unintended credential exposure and encourage safer usage patterns.

Thanks for considering this improvement.

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.

Research direction

No files or tests are named. Start by locating the app-password generation flow and inspect how the newly created password is displayed; verify that it is hidden by default, can be copied explicitly, and is only revealed after deliberate user action.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, php
Domain
authentication, design, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.