diff --git a/auth/profiles.mdx b/auth/profiles.mdx
index 2e592bc..a37a81f 100644
--- a/auth/profiles.mdx
+++ b/auth/profiles.mdx
@@ -69,6 +69,26 @@ func main() {
```
+## Rename a profile
+
+Profiles can be renamed without recreating their stored browser state. The new name must be unique within the project.
+
+
+```typescript TypeScript
+await kernel.profiles.update('profiles-demo', { name: 'checkout-session' });
+```
+
+```python Python
+kernel.profiles.update("profiles-demo", name="checkout-session")
+```
+
+```go Go
+_, err := client.Profiles.Update(ctx, "profiles-demo", kernel.ProfileUpdateParams{
+ Name: "checkout-session",
+})
+```
+
+
## 2. Start a browser session using the profile and save changes
After creating the profile, reference it by its `name` or `id` when creating a browser.
diff --git a/browsers/extensions.mdx b/browsers/extensions.mdx
index dca389f..db419a0 100644
--- a/browsers/extensions.mdx
+++ b/browsers/extensions.mdx
@@ -45,7 +45,9 @@ Extensions uploaded to Kernel are assigned a random ID, but you can also give th
This name must be unique within your [project](/info/projects).
To retrieve an extension's metadata without downloading the archive, call `GET /extensions/{id_or_name}/metadata`.
-The response includes the extension's ID, name, size, and timestamps.
+The response includes the extension's ID, name, size, timestamps, and, when available, a lowercase hexadecimal SHA-256 `checksum`.
+
+The checksum is calculated from the exact archive bytes uploaded to Kernel. It is not a normalized checksum of the unpacked extension: archive metadata, file ordering, or compression can produce a different checksum for otherwise identical files. The value can be absent for legacy extensions and Chrome Web Store extensions that Kernel repackaged.
## Using extensions in a browser
diff --git a/info/api-keys.mdx b/info/api-keys.mdx
index 125fc8b..5cf8560 100644
--- a/info/api-keys.mdx
+++ b/info/api-keys.mdx
@@ -154,6 +154,10 @@ func main() {
Rename a key when the owner or purpose changes. Delete a key when the workload no longer needs access.
+
+An API key cannot delete itself. Authenticate with a different key when deleting a key, so the request cannot revoke the credential that is authorizing it.
+
+
```typescript TypeScript
await kernel.apiKeys.update('key_01jwv4tn5m8k3q2v7x9p0a1bc2', {
diff --git a/proxies/overview.mdx b/proxies/overview.mdx
index 12058b4..49f6e4f 100644
--- a/proxies/overview.mdx
+++ b/proxies/overview.mdx
@@ -72,6 +72,25 @@ func main() {
```
+## Rename a proxy
+
+Rename a proxy without changing its type or connection settings. Proxy updates are addressed by ID, and proxy names are not unique, so use the proxy ID when a name could match more than one configuration.
+
+
+```typescript TypeScript
+await kernel.proxies.update(proxy.id, { name: 'checkout-proxy' });
+```
+
+```python Python
+kernel.proxies.update(proxy.id, name="checkout-proxy")
+```
+
+```go Go
+_, err := client.Proxies.Update(ctx, proxy.ID, kernel.ProxyUpdateParams{
+ Name: "checkout-proxy",
+})
+```
+
## List your proxies