From d5000a287b841204fd98994af4dfcafb042cd76e Mon Sep 17 00:00:00 2001 From: "warp-factories[bot]" <243557089+warp-factories[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:38:01 +0000 Subject: [PATCH 1/2] docs: refresh UI path snapshot for API keys Settings rename The Warp client renamed Settings > Cloud platform > Oz Cloud API Keys to API keys. Refresh valid_paths.json, migrate doc references, and keep the old label as a deprecated alias for validation. --- .agents/references/terminology.md | 9 ++-- .../skills/validate_ui_refs/valid_paths.json | 53 ++++--------------- .../validate_ui_refs/validate_ui_refs.py | 8 +-- .agents/templates/procedural.md | 2 +- src/content/docs/agents/cli/reference.mdx | 2 +- .../enterprise-features/analytics-api.mdx | 4 +- .../platform/self-hosting/troubleshooting.mdx | 2 +- src/content/docs/reference/cli/api-keys.mdx | 4 +- 8 files changed, 26 insertions(+), 58 deletions(-) diff --git a/.agents/references/terminology.md b/.agents/references/terminology.md index f2f008877..27929e7fd 100644 --- a/.agents/references/terminology.md +++ b/.agents/references/terminology.md @@ -53,10 +53,11 @@ For the summary of the most critical terms (core features, Automation Platform t *Usage note:* Capitalize as a UI name. The Settings sidebar has three **umbrellas** (**Agents**, **Code**, and **Cloud platform**) that expand into subpages — always reference the specific subpage in paths, not the umbrella alone. - **Agents** umbrella subpages: **Warp Agent**, **Profiles**, **MCP servers**, **Knowledge**, **Third party CLI agents**. - **Code** umbrella subpages: **Indexing and projects**, **Editor and Code Review**. - - **Cloud platform** umbrella subpages: **Environments**, **Oz Cloud API Keys**. + - **Cloud platform** umbrella subpages: **Environments**, **API keys**. - Deprecated labels to avoid: - **Settings** > **AI** — now under the **Agents** umbrella; pick the relevant subpage (**Warp Agent** for the global toggle + Active AI/Input/Voice/Other/Experimental; **Profiles** for permissions and allow/denylists; **Knowledge**; **Third party CLI agents**). - - **Settings** > **Platform** — now **Settings** > **Cloud platform** > **Oz Cloud API Keys** for `oz agent` API keys. + - **Settings** > **Platform** — now **Settings** > **Cloud platform** > **API keys** for Warp API keys. + - **Settings** > **Cloud platform** > **Oz Cloud API Keys** — now **Settings** > **Cloud platform** > **API keys**. - **Settings** > **MCP Servers** (top-level) — now **Settings** > **Agents** > **MCP servers**. - **Settings** > **Environments** (top-level) — now **Settings** > **Cloud platform** > **Environments**. @@ -249,8 +250,8 @@ Not every "Oz" in the docs is stale. These are deliberate and correct until when the answer came back, rather than something a variable flip had already broken.* - **Changelog entries.** Historical records of what shipped under the old name. -- **Settings labels** such as **Settings** > **Cloud platform** > **Oz Cloud API - Keys**. These are literal UI strings and change only when the app does. +- **Settings labels** such as **Settings** > **Cloud platform** > **API keys**. + These are literal UI strings and change only when the app does. ## Platform terms diff --git a/.agents/skills/validate_ui_refs/valid_paths.json b/.agents/skills/validate_ui_refs/valid_paths.json index 4f14763e1..f9791364a 100644 --- a/.agents/skills/validate_ui_refs/valid_paths.json +++ b/.agents/skills/validate_ui_refs/valid_paths.json @@ -20,7 +20,7 @@ "Cloud platform": { "subpages": [ "Environments", - "Oz Cloud API Keys" + "API keys" ], "source_file": "app/src/settings_view/mod.rs" } @@ -68,7 +68,11 @@ }, "Platform": { "umbrella": "Cloud platform", - "default_subpage": "Oz Cloud API Keys" + "default_subpage": "API keys" + }, + "Oz Cloud API Keys": { + "umbrella": "Cloud platform", + "default_subpage": "API keys" } }, "settings_sections": { @@ -82,11 +86,6 @@ "sub_sections": [], "source_file": "app/src/settings_view/mod.rs" }, - "MCP Servers": { - "display_name": "MCP Servers", - "sub_sections": [], - "source_file": "app/src/settings_view/mcp_servers_page.rs" - }, "Billing and usage": { "display_name": "Billing and usage", "sub_sections": [], @@ -167,30 +166,6 @@ ], "source_file": "app/src/settings_view/warpify_page.rs" }, - "AI": { - "display_name": "AI", - "sub_sections": [ - "Usage", - "Active AI", - "Agents", - "Profiles", - "Input", - "MCP Servers", - "Knowledge", - "Voice", - "Other", - "Third party CLI agents", - "Agent Attribution", - "Experimental", - "Cloud Handoff", - "Custom Inference", - "API Keys", - "AWS Bedrock", - "Gemini Enterprise", - "Custom Routers" - ], - "source_file": "app/src/settings_view/ai_page.rs" - }, "Warp Agent": { "display_name": "Warp Agent", "sub_sections": [ @@ -240,14 +215,6 @@ "source_file": "app/src/settings_view/ai_page.rs", "umbrella": "Agents" }, - "Code": { - "display_name": "Code", - "sub_sections": [ - "Codebase Indexing", - "Code Editor and Review" - ], - "source_file": "app/src/settings_view/code_page.rs" - }, "Indexing and projects": { "display_name": "Indexing and projects", "sub_sections": [ @@ -270,8 +237,8 @@ "source_file": "app/src/settings_view/environments_page.rs", "umbrella": "Cloud platform" }, - "Oz Cloud API Keys": { - "display_name": "Oz Cloud API Keys", + "API keys": { + "display_name": "API keys", "sub_sections": [], "source_file": "app/src/settings_view/platform_page.rs", "umbrella": "Cloud platform" @@ -1553,5 +1520,5 @@ "description": "Toggle Maximize Code Review Panel" } ], - "generated_at": "2026-08-12T00:53:01.810914+00:00" -} \ No newline at end of file + "generated_at": "2026-08-21T20:34:56.380949+00:00" +} diff --git a/.agents/skills/validate_ui_refs/validate_ui_refs.py b/.agents/skills/validate_ui_refs/validate_ui_refs.py index 76d39d942..51b28937c 100644 --- a/.agents/skills/validate_ui_refs/validate_ui_refs.py +++ b/.agents/skills/validate_ui_refs/validate_ui_refs.py @@ -450,7 +450,7 @@ def _suggest_migration_for_deprecated_section( Handles patterns like: Settings > AI > Input -> Settings > Agents > Oz > Input Settings > AI > Knowledge -> Settings > Agents > Knowledge - Settings > Platform -> Settings > Cloud platform > Oz Cloud API Keys + Settings > Platform -> Settings > Cloud platform > API keys Settings > Environments -> Settings > Cloud platform > Environments Settings > MCP Servers -> Settings > Agents > MCP servers """ @@ -465,7 +465,7 @@ def _suggest_migration_for_deprecated_section( subsection_map = info.get("subsection_to_subpage", {}) if len(segments) == 2: - # Settings > Platform -> Settings > Cloud platform > Oz Cloud API Keys + # Settings > Platform -> Settings > Cloud platform > API keys new_path = ["Settings", umbrella, default_subpage] return { "valid": False, @@ -1876,7 +1876,7 @@ def generate_report( SettingsSection::CodeIndexing => write!(f, "Indexing and projects"), SettingsSection::EditorAndCodeReview => write!(f, "Editor and Code Review"), SettingsSection::CloudEnvironments => write!(f, "Environments"), - SettingsSection::OzCloudAPIKeys => write!(f, "Oz Cloud API Keys"), + SettingsSection::OzCloudAPIKeys => write!(f, "API keys"), _ => write!(f, "{self:?}"), } } @@ -2001,7 +2001,7 @@ def _run_self_test(valid_paths_path: Path) -> int: "Indexing and projects", "Editor and Code Review", "Environments", - "Oz Cloud API Keys", + "API keys", ): if expected_subpage not in refreshed.get("settings_sections", {}): failures.append( diff --git a/.agents/templates/procedural.md b/.agents/templates/procedural.md index fbb26174c..570078b36 100644 --- a/.agents/templates/procedural.md +++ b/.agents/templates/procedural.md @@ -24,7 +24,7 @@ Each item should include: what it is (1 short clause), where to get or create it, and a link to the full reference. Example: * **A Warp API key** - Authenticate API requests with a key from - **Settings** > **Cloud platform** > **Oz Cloud API Keys** in the Warp app. See [API Keys](path) for details.] + **Settings** > **Cloud platform** > **API keys** in the Warp app. See [API Keys](path) for details.] ## [Primary task name — sentence case. e.g., "Creating API keys"] diff --git a/src/content/docs/agents/cli/reference.mdx b/src/content/docs/agents/cli/reference.mdx index 752efe138..02fd7dd6b 100644 --- a/src/content/docs/agents/cli/reference.mdx +++ b/src/content/docs/agents/cli/reference.mdx @@ -32,7 +32,7 @@ warp --api-key YOUR_API_KEY Command-line arguments can be captured in shell history and process listings. Prefer the `WARP_API_KEY` environment variable, ideally populated from a secret manager. ::: -Create a key in the Warp app under **Settings** > **Cloud platform** > **Oz Cloud API Keys**. See the [API keys reference](/reference/cli/api-keys/) for details. +Create a key in the Warp app under **Settings** > **Cloud platform** > **API keys**. See the [API keys reference](/reference/cli/api-keys/) for details. ### `--auto-approve` diff --git a/src/content/docs/enterprise/enterprise-features/analytics-api.mdx b/src/content/docs/enterprise/enterprise-features/analytics-api.mdx index 861746d29..3dae9cf28 100644 --- a/src/content/docs/enterprise/enterprise-features/analytics-api.mdx +++ b/src/content/docs/enterprise/enterprise-features/analytics-api.mdx @@ -29,7 +29,7 @@ Before you can call the API, your team must satisfy all of the following: * **Enterprise plan** - The Analytics API is available to all enterprise teams during Early Access; no separate enrollment is required. * **Admin role on the team** - Calls are rejected unless the authenticated user has admin-level permissions on the enterprise team. See [Roles and permissions](/enterprise/team-management/roles-and-permissions/). -* **A personal Warp API key** - Authenticate requests with a key from **Settings** > **Cloud platform** > **Oz Cloud API Keys** in the Warp app. See [API Keys](/reference/cli/api-keys/) for step-by-step instructions. Agent API keys (including legacy team keys) are not accepted by these endpoints — only personal API keys belonging to a team admin work. +* **A personal Warp API key** - Authenticate requests with a key from **Settings** > **Cloud platform** > **API keys** in the Warp app. See [API Keys](/reference/cli/api-keys/) for step-by-step instructions. Agent API keys (including legacy team keys) are not accepted by these endpoints — only personal API keys belonging to a team admin work. * **Enterprise Usage Reporting toggle enabled** - In the Warp app, go to **Admin Panel** > **Privacy** and turn on **Enterprise Usage Reporting (Early Access)**. Until this toggle is on, no usage data is recorded for your team and the endpoints will return empty datasets even if every other prerequisite is met. :::caution @@ -297,7 +297,7 @@ Any authenticated user with admin-level permissions on an enterprise team. Calls ### What kind of API key works? -Only **personal** Warp API keys created by an admin from **Settings** > **Cloud platform** > **Oz Cloud API Keys**. Agent API keys (including legacy team keys) are explicitly rejected by these endpoints. See [API Keys](/reference/cli/api-keys/) for how to create one. +Only **personal** Warp API keys created by an admin from **Settings** > **Cloud platform** > **API keys**. Agent API keys (including legacy team keys) are explicitly rejected by these endpoints. See [API Keys](/reference/cli/api-keys/) for how to create one. ### Are these calls billed? diff --git a/src/content/docs/platform/self-hosting/troubleshooting.mdx b/src/content/docs/platform/self-hosting/troubleshooting.mdx index a6fc4c7dd..2a53f2b64 100644 --- a/src/content/docs/platform/self-hosting/troubleshooting.mdx +++ b/src/content/docs/platform/self-hosting/troubleshooting.mdx @@ -58,7 +58,7 @@ The steps below apply to the [managed architecture](/platform/self-hosting/#mana **Fix:** 1. Confirm your API key is correct, not expired, and has team scope. -2. Regenerate the API key in **Settings** > **Cloud platform** > **Oz Cloud API Keys** if you suspect it's invalid. +2. Regenerate the API key in **Settings** > **Cloud platform** > **API keys** if you suspect it's invalid. 3. Ensure the host has outbound internet access to `oz.warp.dev:443`. 4. Check that no firewall rules are blocking WebSocket connections to `wss://oz.warp.dev`. 5. Increase log verbosity with `--log-level debug` to see connection details. diff --git a/src/content/docs/reference/cli/api-keys.mdx b/src/content/docs/reference/cli/api-keys.mdx index 4794bbdd8..153007219 100644 --- a/src/content/docs/reference/cli/api-keys.mdx +++ b/src/content/docs/reference/cli/api-keys.mdx @@ -38,7 +38,7 @@ You can create an API key in either the {VARS.WEB_APP} settings page and the Warp app's **Settings** > **Cloud platform** > **Oz Cloud API Keys** both list your active keys. Both surfaces show: +The {VARS.WEB_APP} settings page and the Warp app's **Settings** > **Cloud platform** > **API keys** both list your active keys. Both surfaces show: * **Name** — The name you assigned when creating the key. * **Scope** — Personal keys show your user; agent keys show the cloud agent the key runs as. From 428184037b6dd6f564e563986da2f612af390b22 Mon Sep 17 00:00:00 2001 From: "warp-agent-staging[bot]" <240773466+warp-agent-staging[bot]@users.noreply.github.com> Date: Sun, 23 Aug 2026 21:04:20 +0000 Subject: [PATCH 2/2] docs: fix deprecated-subpage migration for Oz Cloud API Keys rename - Add a deprecated_subpages alias map on the Cloud platform umbrella entry in valid_paths.json so the historical full path "Settings > Cloud platform > Oz Cloud API Keys" migrates deterministically to "Settings > Cloud platform > API keys", instead of falling into the umbrella-match branch and returning an unfixed fuzzy mismatch. - Add a self-test regression covering both the bare and full legacy path forms. - Remove the stale "Settings > Cloud platform > API keys" example from the "What still says Oz" section of terminology.md, since that label no longer contains "Oz". Co-Authored-By: Warp --- .agents/references/terminology.md | 2 - .../skills/validate_ui_refs/valid_paths.json | 3 ++ .../validate_ui_refs/validate_ui_refs.py | 42 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/.agents/references/terminology.md b/.agents/references/terminology.md index 27929e7fd..e33e04198 100644 --- a/.agents/references/terminology.md +++ b/.agents/references/terminology.md @@ -250,8 +250,6 @@ Not every "Oz" in the docs is stale. These are deliberate and correct until when the answer came back, rather than something a variable flip had already broken.* - **Changelog entries.** Historical records of what shipped under the old name. -- **Settings labels** such as **Settings** > **Cloud platform** > **API keys**. - These are literal UI strings and change only when the app does. ## Platform terms diff --git a/.agents/skills/validate_ui_refs/valid_paths.json b/.agents/skills/validate_ui_refs/valid_paths.json index f9791364a..3cd058ca9 100644 --- a/.agents/skills/validate_ui_refs/valid_paths.json +++ b/.agents/skills/validate_ui_refs/valid_paths.json @@ -22,6 +22,9 @@ "Environments", "API keys" ], + "deprecated_subpages": { + "Oz Cloud API Keys": "API keys" + }, "source_file": "app/src/settings_view/mod.rs" } }, diff --git a/.agents/skills/validate_ui_refs/validate_ui_refs.py b/.agents/skills/validate_ui_refs/validate_ui_refs.py index 51b28937c..ca03390e5 100644 --- a/.agents/skills/validate_ui_refs/validate_ui_refs.py +++ b/.agents/skills/validate_ui_refs/validate_ui_refs.py @@ -560,6 +560,26 @@ def validate_ui_path(path: str, valid_paths: Dict[str, Any]) -> Dict[str, Any]: } subpage = segments[2] if subpage not in subpages: + # A subpage may itself have been renamed within the same + # umbrella (e.g. "Oz Cloud API Keys" -> "API keys" under + # "Cloud platform"). Check this deterministic alias map before + # falling through to case-insensitive/fuzzy matching, so a + # historical full path resolves to an exact migration instead + # of an unfixed fuzzy suggestion. + deprecated_subpages = umbrella_data.get("deprecated_subpages", {}) + if subpage in deprecated_subpages: + mapped_subpage = deprecated_subpages[subpage] + new_path = ["Settings", section, mapped_subpage] + segments[3:] + return { + "valid": False, + "issue": ( + f"\"{subpage}\" was renamed to \"{mapped_subpage}\" " + f"under the \"{section}\" umbrella" + ), + "suggestion": " > ".join(new_path), + "confidence": 0.95, + "fix_type": "deprecated_section", + } ci_match = next( (s for s in subpages if s.lower() == subpage.lower()), None ) @@ -2078,6 +2098,28 @@ def _run_self_test(valid_paths_path: Path) -> int: f"extract_command_palette_refs() missed prose reference {expected!r}" ) + # --- 6. "Oz Cloud API Keys" -> "API keys" migration, both legacy forms. + # The label was renamed twice over: first the whole page moved under the + # "Cloud platform" umbrella (as the bare top-level "Oz Cloud API Keys" + # section), then the subpage itself was renamed to "API keys". Both + # historical spellings must resolve to the same current path. + expected_suggestion = "Settings > Cloud platform > API keys" + bare_legacy = validate_ui_path("Settings > Oz Cloud API Keys", data) + if bare_legacy["valid"] or bare_legacy.get("suggestion") != expected_suggestion: + failures.append( + "validate_ui_path() did not migrate the bare legacy " + f"\"Settings > Oz Cloud API Keys\" path: {bare_legacy}" + ) + full_legacy = validate_ui_path( + "Settings > Cloud platform > Oz Cloud API Keys", data + ) + if full_legacy["valid"] or full_legacy.get("suggestion") != expected_suggestion: + failures.append( + "validate_ui_path() did not migrate the full legacy " + "\"Settings > Cloud platform > Oz Cloud API Keys\" path " + f"(deprecated_subpages regression): {full_legacy}" + ) + if failures: print("SELF-TEST FAILED:") for f in failures: