diff --git a/README.md b/README.md
index 1d806b978643..4a35cdd9ddaa 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,13 @@ Cargo downloads your Rust project’s dependencies and compiles your project.
[The Cargo Book]: https://doc.rust-lang.org/cargo/
[Cargo Contributor Guide]: https://rust-lang.github.io/cargo/contrib/
+> The Cargo binary distributed through with Rust is maintained by the Cargo
+> team for use by the wider ecosystem.
+> For all other uses of this crate (as a binary or library) this is maintained
+> by the Cargo team, primarily for use by Cargo and not intended for external
+> use (except as a transitive dependency). This crate may make major changes to
+> its APIs.
+
## Code Status
[![CI](https://github.com/rust-lang/cargo/actions/workflows/main.yml/badge.svg?branch=auto-cargo)](https://github.com/rust-lang/cargo/actions/workflows/main.yml)
diff --git a/benches/benchsuite/README.md b/benches/benchsuite/README.md
new file mode 100644
index 000000000000..ca004d0c62a0
--- /dev/null
+++ b/benches/benchsuite/README.md
@@ -0,0 +1,3 @@
+> This crate is maintained by the Cargo team, primarily for use by Cargo
+> and not intended for external use. This
+> crate may make major changes to its APIs or be deprecated without warning.
diff --git a/benches/benchsuite/src/lib.rs b/benches/benchsuite/src/lib.rs
index 327c04c4f05b..2d85584d5137 100644
--- a/benches/benchsuite/src/lib.rs
+++ b/benches/benchsuite/src/lib.rs
@@ -1,3 +1,7 @@
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use. This
+//! > crate may make major changes to its APIs or be deprecated without warning.
+
#![allow(clippy::disallowed_methods)]
use cargo::GlobalContext;
diff --git a/crates/cargo-platform/README.md b/crates/cargo-platform/README.md
new file mode 100644
index 000000000000..844bc081f707
--- /dev/null
+++ b/crates/cargo-platform/README.md
@@ -0,0 +1,2 @@
+> This crate is maintained by the Cargo team for use by the wider
+> ecosystem. This crate follows semver compatibility for its APIs.
diff --git a/crates/cargo-platform/src/lib.rs b/crates/cargo-platform/src/lib.rs
index 7911e484e578..71e9140bae9c 100644
--- a/crates/cargo-platform/src/lib.rs
+++ b/crates/cargo-platform/src/lib.rs
@@ -6,6 +6,9 @@
//!
//! See `examples/matches.rs` for an example of how to match against a `Platform`.
//!
+//! > This crate is maintained by the Cargo team for use by the wider
+//! > ecosystem. This crate follows semver compatibility for its APIs.
+//!
//! [`Platform`]: enum.Platform.html
use std::fmt;
diff --git a/crates/cargo-test-macro/README.md b/crates/cargo-test-macro/README.md
index 311d5ed6d66d..ca004d0c62a0 100644
--- a/crates/cargo-test-macro/README.md
+++ b/crates/cargo-test-macro/README.md
@@ -1,5 +1,3 @@
-WARNING: You might not want to use this outside of Cargo.
-
-* This is designed for testing Cargo itself. Use at your own risk.
-* No guarantee on any stability across versions.
-* No feature request would be accepted unless proved useful for testing Cargo.
+> This crate is maintained by the Cargo team, primarily for use by Cargo
+> and not intended for external use. This
+> crate may make major changes to its APIs or be deprecated without warning.
diff --git a/crates/cargo-test-macro/src/lib.rs b/crates/cargo-test-macro/src/lib.rs
index 2e62f6a32ff0..93bf0ec08c69 100644
--- a/crates/cargo-test-macro/src/lib.rs
+++ b/crates/cargo-test-macro/src/lib.rs
@@ -3,11 +3,9 @@
//! This is meant to be consumed alongside `cargo-test-support`. See
//! for a guide on writing tests.
//!
-//! WARNING: You might not want to use this outside of Cargo.
-//!
-//! * This is designed for testing Cargo itself. Use at your own risk.
-//! * No guarantee on any stability across versions.
-//! * No feature request would be accepted unless proved useful for testing Cargo.
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use. This
+//! > crate may make major changes to its APIs or be deprecated without warning.
use proc_macro::*;
use std::path::Path;
diff --git a/crates/cargo-test-support/README.md b/crates/cargo-test-support/README.md
index 311d5ed6d66d..ca004d0c62a0 100644
--- a/crates/cargo-test-support/README.md
+++ b/crates/cargo-test-support/README.md
@@ -1,5 +1,3 @@
-WARNING: You might not want to use this outside of Cargo.
-
-* This is designed for testing Cargo itself. Use at your own risk.
-* No guarantee on any stability across versions.
-* No feature request would be accepted unless proved useful for testing Cargo.
+> This crate is maintained by the Cargo team, primarily for use by Cargo
+> and not intended for external use. This
+> crate may make major changes to its APIs or be deprecated without warning.
diff --git a/crates/cargo-test-support/src/lib.rs b/crates/cargo-test-support/src/lib.rs
index f95591182006..2f2d43b6a1f0 100644
--- a/crates/cargo-test-support/src/lib.rs
+++ b/crates/cargo-test-support/src/lib.rs
@@ -11,11 +11,9 @@
//! targeted at cargo contributors
//! - Updated on each update of the `cargo` submodule in `rust-lang/rust`
//!
-//! **WARNING:** You might not want to use this outside of Cargo.
-//!
-//! * This is designed for testing Cargo itself. Use at your own risk.
-//! * No guarantee on any stability across versions.
-//! * No feature request would be accepted unless proved useful for testing Cargo.
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use. This
+//! > crate may make major changes to its APIs or be deprecated without warning.
//!
//! # Example
//!
diff --git a/crates/cargo-util-schemas/README.md b/crates/cargo-util-schemas/README.md
new file mode 100644
index 000000000000..844bc081f707
--- /dev/null
+++ b/crates/cargo-util-schemas/README.md
@@ -0,0 +1,2 @@
+> This crate is maintained by the Cargo team for use by the wider
+> ecosystem. This crate follows semver compatibility for its APIs.
diff --git a/crates/cargo-util-schemas/src/lib.rs b/crates/cargo-util-schemas/src/lib.rs
index 84b6c39a89b4..910438155e92 100644
--- a/crates/cargo-util-schemas/src/lib.rs
+++ b/crates/cargo-util-schemas/src/lib.rs
@@ -4,6 +4,9 @@
//! parsing command-lines.
//! Any logic for getting final semantics from these will likely need other tools to process, like
//! `cargo metadata`.
+//!
+//! > This crate is maintained by the Cargo team for use by the wider
+//! > ecosystem. This crate follows semver compatibility for its APIs.
pub mod core;
pub mod manifest;
diff --git a/crates/cargo-util/README.md b/crates/cargo-util/README.md
new file mode 100644
index 000000000000..579d1a85c1ed
--- /dev/null
+++ b/crates/cargo-util/README.md
@@ -0,0 +1,3 @@
+> This crate is maintained by the Cargo team, primarily for use by Cargo
+> and not intended for external use (except as a transitive dependency). This
+> crate may make major changes to its APIs or be deprecated without warning.
diff --git a/crates/cargo-util/src/lib.rs b/crates/cargo-util/src/lib.rs
index 717e89ba469f..0734118f613d 100644
--- a/crates/cargo-util/src/lib.rs
+++ b/crates/cargo-util/src/lib.rs
@@ -1,4 +1,8 @@
//! Miscellaneous support code used by Cargo.
+//!
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use (except as a transitive dependency). This
+//! > crate may make major changes to its APIs or be deprecated without warning.
#![allow(clippy::disallowed_methods)]
diff --git a/crates/crates-io/README.md b/crates/crates-io/README.md
new file mode 100644
index 000000000000..844bc081f707
--- /dev/null
+++ b/crates/crates-io/README.md
@@ -0,0 +1,2 @@
+> This crate is maintained by the Cargo team for use by the wider
+> ecosystem. This crate follows semver compatibility for its APIs.
diff --git a/crates/crates-io/lib.rs b/crates/crates-io/lib.rs
index 5d8a8c50cc32..ae7f9c4daa31 100644
--- a/crates/crates-io/lib.rs
+++ b/crates/crates-io/lib.rs
@@ -1,3 +1,6 @@
+//! > This crate is maintained by the Cargo team for use by the wider
+//! > ecosystem. This crate follows semver compatibility for its APIs.
+
use std::collections::BTreeMap;
use std::fs::File;
use std::io::prelude::*;
diff --git a/crates/home/README.md b/crates/home/README.md
index a80adbd3b352..23523f9bdb17 100644
--- a/crates/home/README.md
+++ b/crates/home/README.md
@@ -20,6 +20,10 @@ that Cargo and rustup store their data.
See [rust-lang/rust#43321].
+> This crate is maintained by the Cargo team, primarily for use by Cargo and Rustup
+> and not intended for external use. This
+> crate may make major changes to its APIs or be deprecated without warning.
+
[rust-lang/rust#43321]: https://github.com/rust-lang/rust/issues/43321
## License
diff --git a/crates/home/src/lib.rs b/crates/home/src/lib.rs
index bbe7c32ca84e..534ecb2f9030 100644
--- a/crates/home/src/lib.rs
+++ b/crates/home/src/lib.rs
@@ -16,6 +16,10 @@
//!
//! See also this [discussion].
//!
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo and Rustup
+//! > and not intended for external use. This
+//! > crate may make major changes to its APIs or be deprecated without warning.
+//!
//! [discussion]: https://github.com/rust-lang/rust/pull/46799#issuecomment-361156935
#![allow(clippy::disallowed_methods)]
diff --git a/crates/mdman/README.md b/crates/mdman/README.md
index e28b596ba34b..9dc1553ccb08 100644
--- a/crates/mdman/README.md
+++ b/crates/mdman/README.md
@@ -2,6 +2,10 @@
mdman is a small utility for creating man pages from markdown text files.
+> This crate is maintained by the Cargo team, primarily for use by Cargo
+> and not intended for external use (except as a transitive dependency). This
+> crate may make major changes to its APIs or be deprecated without warning.
+
## Usage
See the [man page](doc/out/mdman.md) generated by this tool.
diff --git a/crates/mdman/src/lib.rs b/crates/mdman/src/lib.rs
index f0b5167e80cb..0b0e6e734af3 100644
--- a/crates/mdman/src/lib.rs
+++ b/crates/mdman/src/lib.rs
@@ -1,4 +1,8 @@
//! mdman markdown to man converter.
+//!
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use (except as a transitive dependency). This
+//! > crate may make major changes to its APIs or be deprecated without warning.
use anyhow::{bail, Context, Error};
use pulldown_cmark::{CowStr, Event, LinkType, Options, Parser, Tag, TagEnd};
diff --git a/crates/resolver-tests/README.md b/crates/resolver-tests/README.md
index 4f84467bd629..72a4f7e3c5b1 100644
--- a/crates/resolver-tests/README.md
+++ b/crates/resolver-tests/README.md
@@ -5,6 +5,10 @@
This crate aims to test the resolution of Cargo's resolver. It implements a [SAT solver](https://en.wikipedia.org/wiki/SAT_solver) to compare with resolution of Cargo's resolver.
This ensures that Cargo's dependency resolution is proven valid by lowering to [SAT problem](https://en.wikipedia.org/wiki/Boolean_satisfiability_problem).
+> This crate is maintained by the Cargo team, primarily for use by Cargo
+> and not intended for external use (except as a transitive dependency). This
+> crate may make major changes to its APIs or be deprecated without warning.
+
## About the test
The Cargo's resolver is very sensitive to what order it tries to evaluate constraints. This makes it incredibly difficult
diff --git a/crates/resolver-tests/src/lib.rs b/crates/resolver-tests/src/lib.rs
index aa9c8a56ce88..a3d5dad7344e 100644
--- a/crates/resolver-tests/src/lib.rs
+++ b/crates/resolver-tests/src/lib.rs
@@ -1,3 +1,7 @@
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use (except as a transitive dependency). This
+//! > crate may make major changes to its APIs or be deprecated without warning.
+
#![allow(clippy::print_stderr)]
use std::cmp::{max, min};
diff --git a/crates/rustfix/README.md b/crates/rustfix/README.md
index 0546e6018f9b..70ec423c757c 100644
--- a/crates/rustfix/README.md
+++ b/crates/rustfix/README.md
@@ -9,6 +9,10 @@ This is a low-level library. You pass it the JSON output from `rustc`, and you c
If you are looking for the [`cargo fix`] implementation, the core of it is located in [`cargo::ops::fix`].
+> This crate is maintained by the Cargo team, primarily for use by Cargo and Rust compiler test suite
+> and not intended for external use (except as a transitive dependency). This
+> crate may make major changes to its APIs or be deprecated without warning.
+
[`cargo fix`]: https://doc.rust-lang.org/cargo/commands/cargo-fix.html
[`cargo::ops::fix`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/ops/fix.rs
diff --git a/crates/rustfix/src/lib.rs b/crates/rustfix/src/lib.rs
index 0298e58ce1fc..a1e2c47cfeb9 100644
--- a/crates/rustfix/src/lib.rs
+++ b/crates/rustfix/src/lib.rs
@@ -18,6 +18,10 @@
//! 3. Create a [`CodeFix`] with the source of a file to modify.
//! 4. Call [`CodeFix::apply`] to apply a change.
//! 5. Call [`CodeFix::finish`] to get the result and write it back to disk.
+//!
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo and Rust compiler test suite
+//! > and not intended for external use (except as a transitive dependency). This
+//! > crate may make major changes to its APIs or be deprecated without warning.
use std::collections::HashSet;
use std::ops::Range;
diff --git a/credential/cargo-credential-1password/README.md b/credential/cargo-credential-1password/README.md
index fc3c9460a56d..74bf4c4eeb04 100644
--- a/credential/cargo-credential-1password/README.md
+++ b/credential/cargo-credential-1password/README.md
@@ -2,6 +2,11 @@
A Cargo [credential provider] for [1password].
+> This crate is maintained by the Cargo team as a part of an experiment around
+> 1password integration. We encourage people to try to use this crate in their projects and
+> provide feedback through [issues](https://github.com/rust-lang/cargo/issues/), but do not
+> guarantee long term maintenance.
+
## Usage
`cargo-credential-1password` uses the 1password `op` CLI to store the token. You
diff --git a/credential/cargo-credential-1password/src/main.rs b/credential/cargo-credential-1password/src/main.rs
index 38b567bf2d49..0cb720b36aad 100644
--- a/credential/cargo-credential-1password/src/main.rs
+++ b/credential/cargo-credential-1password/src/main.rs
@@ -1,4 +1,9 @@
//! Cargo registry 1password credential process.
+//!
+//! > This crate is maintained by the Cargo team as a part of an experiment around
+//! > 1password integration. We encourage people to try to use this crate in their projects and
+//! > provide feedback through [issues](https://github.com/rust-lang/cargo/issues/), but do not
+//! > guarantee long term maintenance.
#![allow(clippy::disallowed_methods)]
#![allow(clippy::print_stderr)]
diff --git a/credential/cargo-credential-libsecret/README.md b/credential/cargo-credential-libsecret/README.md
index aaba2887f41f..a6af3b7575a0 100644
--- a/credential/cargo-credential-libsecret/README.md
+++ b/credential/cargo-credential-libsecret/README.md
@@ -5,5 +5,9 @@ See the [credential-provider] documentation for how to use this.
This credential provider is built-in to cargo as `cargo:libsecret`.
+> This crate is maintained by the Cargo team, primarily for use by Cargo
+> and not intended for external use (except as a transitive dependency). This
+> crate may make major changes to its APIs or be deprecated without warning.
+
[GNOME libsecret]: https://wiki.gnome.org/Projects/Libsecret
[credential-provider]: https://doc.rust-lang.org/nightly/cargo/reference/registry-authentication.html
diff --git a/credential/cargo-credential-libsecret/src/lib.rs b/credential/cargo-credential-libsecret/src/lib.rs
index 67452f05be7d..0d10fb836892 100644
--- a/credential/cargo-credential-libsecret/src/lib.rs
+++ b/credential/cargo-credential-libsecret/src/lib.rs
@@ -1,3 +1,7 @@
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use (except as a transitive dependency). This
+//! > crate may make major changes to its APIs or be deprecated without warning.
+
#[cfg(target_os = "linux")]
mod linux {
//! Implementation of the libsecret credential helper.
diff --git a/credential/cargo-credential-macos-keychain/README.md b/credential/cargo-credential-macos-keychain/README.md
index f5efe496b8fa..28cabf4206db 100644
--- a/credential/cargo-credential-macos-keychain/README.md
+++ b/credential/cargo-credential-macos-keychain/README.md
@@ -5,6 +5,10 @@ See the [credential-provider] documentation for how to use this.
This credential provider is built-in to cargo as `cargo:macos-keychain`.
+> This crate is maintained by the Cargo team, primarily for use by Cargo
+> and not intended for external use (except as a transitive dependency). This
+> crate may make major changes to its APIs or be deprecated without warning.
+
[macOS Keychain]: https://support.apple.com/guide/keychain-access/welcome/mac
[credential-provider]: https://doc.rust-lang.org/nightly/cargo/reference/registry-authentication.html
diff --git a/credential/cargo-credential-macos-keychain/src/lib.rs b/credential/cargo-credential-macos-keychain/src/lib.rs
index 8a702a3620c6..f6d253c7a585 100644
--- a/credential/cargo-credential-macos-keychain/src/lib.rs
+++ b/credential/cargo-credential-macos-keychain/src/lib.rs
@@ -1,4 +1,8 @@
//! Cargo registry macos keychain credential process.
+//!
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use (except as a transitive dependency). This
+//! > crate may make major changes to its APIs or be deprecated without warning.
#![allow(clippy::print_stderr)]
diff --git a/credential/cargo-credential-wincred/README.md b/credential/cargo-credential-wincred/README.md
index 1995e9d76cf4..0cb6b9512708 100644
--- a/credential/cargo-credential-wincred/README.md
+++ b/credential/cargo-credential-wincred/README.md
@@ -5,5 +5,9 @@ See the [credential-provider] documentation for how to use this.
This credential provider is built-in to cargo as `cargo:wincred`.
+> This crate is maintained by the Cargo team, primarily for use by Cargo
+> and not intended for external use (except as a transitive dependency). This
+> crate may make major changes to its APIs or be deprecated without warning.
+
[Windows Credential Manager]: https://support.microsoft.com/en-us/windows/accessing-credential-manager-1b5c916a-6a16-889f-8581-fc16e8165ac0
[credential-provider]: https://doc.rust-lang.org/nightly/cargo/reference/registry-authentication.html
diff --git a/credential/cargo-credential-wincred/src/lib.rs b/credential/cargo-credential-wincred/src/lib.rs
index 24b072ee28ad..eb6ea390bfce 100644
--- a/credential/cargo-credential-wincred/src/lib.rs
+++ b/credential/cargo-credential-wincred/src/lib.rs
@@ -1,4 +1,8 @@
//! Cargo registry windows credential process.
+//!
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use (except as a transitive dependency). This
+//! > crate may make major changes to its APIs or be deprecated without warning.
#[cfg(windows)]
mod win {
diff --git a/credential/cargo-credential/README.md b/credential/cargo-credential/README.md
index d87d41bb8c8e..8e4c9f94e74a 100644
--- a/credential/cargo-credential/README.md
+++ b/credential/cargo-credential/README.md
@@ -10,6 +10,9 @@ https://doc.rust-lang.org/nightly/cargo/reference/credential-provider-protocol.h
Example implementations may be found at
https://github.com/rust-lang/cargo/tree/master/credential
+> This crate is maintained by the Cargo team for use by the wider
+> ecosystem. This crate follows semver compatibility for its APIs.
+
## Usage
Create a Cargo project with this as a dependency:
diff --git a/credential/cargo-credential/src/lib.rs b/credential/cargo-credential/src/lib.rs
index 0888fb402f79..c8e64b983af7 100644
--- a/credential/cargo-credential/src/lib.rs
+++ b/credential/cargo-credential/src/lib.rs
@@ -12,6 +12,9 @@
//! While in the `perform` function, stdin and stdout will be re-attached to the
//! active console. This allows credential providers to be interactive if necessary.
//!
+//! > This crate is maintained by the Cargo team for use by the wider
+//! > ecosystem. This crate follows semver compatibility for its APIs.
+//!
//! ## Error handling
//! ### [`Error::UrlNotSupported`]
//! A credential provider may only support some registry URLs. If this is the case
diff --git a/src/cargo/lib.rs b/src/cargo/lib.rs
index 16ed4cfaa3a7..7dc25ad14a04 100644
--- a/src/cargo/lib.rs
+++ b/src/cargo/lib.rs
@@ -7,9 +7,10 @@
//! - : targeted at cargo contributors
//! - Updated on each update of the `cargo` submodule in `rust-lang/rust`
//!
-//! **WARNING:** Using Cargo as a library has drawbacks, particularly the API is unstable,
-//! and there is no clear path to stabilize it soon at the time of writing. See [The Cargo Book:
-//! External tools] for more on this topic.
+//! > This library is maintained by the Cargo team, primarily for use by Cargo
+//! > and not intended for external use (except as a transitive dependency). This
+//! > crate may make major changes to its APIs. See [The Cargo Book:
+//! > External tools] for more on this topic.
//!
//! ## Overview
//!
diff --git a/src/doc/contrib/src/team.md b/src/doc/contrib/src/team.md
index e8044e6d91fa..a08a6ddfc6cb 100644
--- a/src/doc/contrib/src/team.md
+++ b/src/doc/contrib/src/team.md
@@ -165,6 +165,15 @@ The degree of process is correlated with the degree of change being proposed:
[Stable backports]: process/release.md#stable-backports
[SemVer chapter]: https://doc.rust-lang.org/cargo/reference/semver.html
+## Intentional Artifacts
+
+Per the [Rust crate ownership policy](https://forge.rust-lang.org/policies/crate-ownership.html), the Cargo team's "Intentional Artifacts" include:
+
+- [cargo-credential](https://crates.io/crates/cargo-credential)
+- [cargo-platform](https://crates.io/crates/cargo-platform)
+- [cargo-util-schemas](https://crates.io/crates/cargo-util-schemas)
+- [crates-io](https://crates.io/crates/crates-io)
+
## Contacting the team
The team may be contacted through several channels: