diff --git a/CHANGELOG.md b/CHANGELOG.md
index db7438ab64..a257ed9848 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,10 @@ The format is based on [Keep a Changelog].
## Unreleased - ReleaseDate
+### Fixes
+
+- *(upgrade)* Point single-`--verbose` users to `--verbose --verbose` when more dependencies are hidden
+
## 0.13.12 - 2026-07-14
### Fixes
diff --git a/src/bin/upgrade/upgrade.rs b/src/bin/upgrade/upgrade.rs
index 1afdfcf9f7..02357791d2 100644
--- a/src/bin/upgrade/upgrade.rs
+++ b/src/bin/upgrade/upgrade.rs
@@ -625,7 +625,12 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> {
.or_insert_with(BTreeSet::new)
.insert(dep.name);
}
- let mut note = "Re-run with `--verbose` to show more dependencies".to_owned();
+ let verbose_flags = if args.is_verbose() {
+ "`--verbose --verbose`"
+ } else {
+ "`--verbose`"
+ };
+ let mut note = format!("Re-run with {verbose_flags} to show more dependencies");
for (reason, deps) in categorize {
use std::fmt::Write;
write!(&mut note, "\n {reason}: ")?;
diff --git a/tests/cargo-upgrade/main.rs b/tests/cargo-upgrade/main.rs
index 1f982effbb..5ba27cd23d 100644
--- a/tests/cargo-upgrade/main.rs
+++ b/tests/cargo-upgrade/main.rs
@@ -33,6 +33,7 @@ mod upgrade_all;
mod upgrade_everything;
mod upgrade_renamed;
mod upgrade_verbose;
+mod upgrade_verbose_hint;
mod upgrade_workspace;
mod virtual_manifest;
mod workspace_inheritance;
diff --git a/tests/cargo-upgrade/upgrade_verbose_hint/in/Cargo.toml b/tests/cargo-upgrade/upgrade_verbose_hint/in/Cargo.toml
new file mode 100644
index 0000000000..8e2ccd8138
--- /dev/null
+++ b/tests/cargo-upgrade/upgrade_verbose_hint/in/Cargo.toml
@@ -0,0 +1,47 @@
+[package]
+name = "None"
+version = "0.1.0"
+
+[lib]
+path = "dummy.rs"
+
+[dependencies]
+docopt = "0.4"
+pad = "0.1"
+serde_json = "20.0"
+syn = { version = "0.1.1", default-features = false }
+tar = { version = "0.4", default-features = false }
+ftp = "20.0.0"
+te = { package = "toml_edit", version = "0.1.1" }
+
+[dependencies.semver]
+version = "0.2"
+
+[dependencies.rn]
+package = "renamed"
+version = "0.1"
+
+[dev-dependencies]
+assert_cli = "0.2.0"
+tempdir = "0.1"
+
+[build-dependencies]
+serde = { version = "1.0", path = "../serde" }
+
+[target.'cfg(unix)'.dependencies]
+openssl = "0.4"
+
+[target."windows.json"]
+# let's make it an inline table
+dependencies = { rget = "0.4.0" }
+
+[target.'cfg(target_arch = "x86_64")'.dev-dependencies]
+geo = { version = "0.2.0", default-features = false }
+
+[target.foo.build-dependencies]
+ftp = "0.2.0"
+
+[features]
+default = []
+test-external-apis = []
+unstable = []
diff --git a/tests/cargo-upgrade/upgrade_verbose_hint/mod.rs b/tests/cargo-upgrade/upgrade_verbose_hint/mod.rs
new file mode 100644
index 0000000000..314bbf1fb6
--- /dev/null
+++ b/tests/cargo-upgrade/upgrade_verbose_hint/mod.rs
@@ -0,0 +1,28 @@
+use cargo_test_support::Project;
+use cargo_test_support::compare::assert_ui;
+use cargo_test_support::file;
+use cargo_test_support::prelude::*;
+
+use crate::CargoCommand;
+use cargo_test_support::current_dir;
+
+#[cargo_test]
+fn case() {
+ cargo_test_support::registry::init();
+ crate::add_everything_registry_packages(false);
+ crate::add_git_registry_packages();
+ let project = Project::from_template(current_dir!().join("in"));
+ let project_root = project.root();
+ let cwd = &project_root;
+
+ snapbox::cmd::Command::cargo_ui()
+ .arg("upgrade")
+ .args(["--pinned", "--incompatible", "--verbose"])
+ .current_dir(cwd)
+ .assert()
+ .success()
+ .stdout_eq(file!["stdout.term.svg"])
+ .stderr_eq(file!["stderr.term.svg"]);
+
+ assert_ui().subset_matches(current_dir!().join("out"), &project_root);
+}
diff --git a/tests/cargo-upgrade/upgrade_verbose_hint/out/Cargo.toml b/tests/cargo-upgrade/upgrade_verbose_hint/out/Cargo.toml
new file mode 100644
index 0000000000..b459b857f3
--- /dev/null
+++ b/tests/cargo-upgrade/upgrade_verbose_hint/out/Cargo.toml
@@ -0,0 +1,47 @@
+[package]
+name = "None"
+version = "0.1.0"
+
+[lib]
+path = "dummy.rs"
+
+[dependencies]
+docopt = "99999.0"
+pad = "99999.0"
+serde_json = "99999.0"
+syn = { version = "99999.0.0", default-features = false }
+tar = { version = "99999.0", default-features = false }
+ftp = "99999.0.0"
+te = { package = "toml_edit", version = "99999.0.0" }
+
+[dependencies.semver]
+version = "99999.0"
+
+[dependencies.rn]
+package = "renamed"
+version = "99999.0"
+
+[dev-dependencies]
+assert_cli = "99999.0.0"
+tempdir = "99999.0"
+
+[build-dependencies]
+serde = { version = "1.0", path = "../serde" }
+
+[target.'cfg(unix)'.dependencies]
+openssl = "99999.0"
+
+[target."windows.json"]
+# let's make it an inline table
+dependencies = { rget = "99999.0.0" }
+
+[target.'cfg(target_arch = "x86_64")'.dev-dependencies]
+geo = { version = "99999.0.0", default-features = false }
+
+[target.foo.build-dependencies]
+ftp = "99999.0.0"
+
+[features]
+default = []
+test-external-apis = []
+unstable = []
diff --git a/tests/cargo-upgrade/upgrade_verbose_hint/stderr.term.svg b/tests/cargo-upgrade/upgrade_verbose_hint/stderr.term.svg
new file mode 100644
index 0000000000..e15028903e
--- /dev/null
+++ b/tests/cargo-upgrade/upgrade_verbose_hint/stderr.term.svg
@@ -0,0 +1,33 @@
+
diff --git a/tests/cargo-upgrade/upgrade_verbose_hint/stdout.term.svg b/tests/cargo-upgrade/upgrade_verbose_hint/stdout.term.svg
new file mode 100644
index 0000000000..d12dd233aa
--- /dev/null
+++ b/tests/cargo-upgrade/upgrade_verbose_hint/stdout.term.svg
@@ -0,0 +1,57 @@
+