---
title: "Team workspace and access"
description: "Bring your team’s projects, access, integrations, and billing into one workspace."
canonical_url: "https://hoplite.sh/docs/workspace"
markdown_url: "https://hoplite.sh/docs/workspace.md"
---

# Team workspace and access
URL: /docs/workspace
LLM index: /llms.txt
Description: Bring your team’s projects, access, integrations, and billing into one workspace.
Related: /docs/workspace/billing, /docs/workspace/project-settings, /docs/integrations, /docs/cli

# Team workspace and access

A **team workspace** is your team's account: members, billing, integrations, and projects all live in it. You can belong to several workspaces and switch between them from the workspace switcher.

A **thread workspace** is the separate execution environment that holds one cloud thread's repository and processes. Its [lifecycle](/docs/sandboxes) does not change team membership or billing ownership.

## Members and roles

Invite teammates by email under **Settings → Workspace → Members**. Invitations grant membership on acceptance. Signing in with a verified email also accepts unexpired pending invitations for that address when seats are available, including for an existing account that already belongs to another workspace. Your existing workspace stays selected; choose the invited workspace from the workspace switcher. Roles govern administrative actions like managing members and billing — for example, creating, editing, or deleting an [MCP server](/docs/agent/mcp) requires a fresh owner or admin check, so a session whose role was revoked is rejected.

### Domain auto-join

Workspace owners and admins can add multiple company email domains when a current verified workspace member has an address on that exact domain and the workspace proves DNS ownership. Publish the TXT record `_hoplite-domain-auto-join.<email-domain>` with value `hoplite-org=<workspace-id>`, then retry enabling the domain after DNS propagation. Each workspace needs its own record.

Anyone with a verified matching address can then join automatically without an invite. Hoplite checks DNS proof when enabling, discovering, and joining a workspace; removing the record blocks further joins once cached DNS expires, but does not remove existing members. Public email providers aren't eligible. You can remove a configured domain at any time from **Settings → Workspace → Members**, and email invitations do not require DNS proof.

## API keys

Create API keys under **Settings → Workspace → API keys** for the [MCP server](/docs/cli/mcp-server#api-keys) and user-driven scripts. The [CLI](/docs/cli) doesn't need one: it signs in through your browser and creates its own key, though it can also [store an existing key](/docs/cli#use-an-existing-api-key). Use service accounts for unattended integrations, with explicit permissions and optional project restrictions. Every surface accepts a key as `Authorization: Bearer hop_...` or `X-Api-Key: hop_...`.

When you create a service account, each permission scope is listed with what it covers and set to **None**, **Read**, or **Write**; the buttons at the top set every scope at once. Runs a service account starts are billed to the workspace and never use a member's personal model subscriptions, personal instructions, or private skills.

The personal-key table shows each key’s masked prefix, status, creation date, last use, and expiry. Owners and admins can view and revoke personal keys across the workspace; members can manage keys attributed to them. Legacy keys without a recorded owner remain available to workspace owners and admins. Revoking a key stops subsequent requests using it. The full key is shown only when it is created.

## Developer apps and connected apps

Developer apps let an application offer Hoplite sign-in and request scoped access to a workspace on a user's behalf. This is a private, workspace-enabled feature, not available in every workspace. Where enabled, owners and admins manage **Developer apps** under **Settings → Workspace → API keys**.

To register an app, choose **Create app**, give it a name, add its redirect URLs, and select the allowed scopes. `openid` is required; request only the identity and Hoplite API scopes your application needs. Redirect URLs must use HTTPS, or HTTP on localhost for development, and cannot contain wildcards, fragments, or embedded credentials.

Copy the client ID and the client secret when the app is created. The secret is shown only once; keep it in your application's backend, not browser code. Apps use the authorization-code flow with PKCE and can request `offline_access` for refresh tokens. A user's consent applies to the selected workspace and requested scopes; it does not give the app permissions beyond that user's workspace role.

Owners and admins can edit, disable, or delete an app, or rotate its secret. Each of these changes invalidates existing grants and tokens, so users must authorize the app again before it can resume access. After rotation, update the secret in your application too.

Users can review apps they have authorized in **Connected apps** on the same API keys page and choose **Revoke access** to end an app's existing access.

## The settings map

Settings live at one place (`/settings`), grouped by scope. The unified **Settings → Integrations** page keeps personal, selected-project, and workspace connections together.

### Integrations

| Scope | What's there |
| --- | --- |
| **Personal** | ChatGPT subscription, phone, and personal Slack defaults |
| **Project** | Linear and eligible Sentry bindings for the selected project |
| **Workspace** | GitHub App installation, Slack connection, and [Axiom and Bronto](/docs/integrations#axiom-and-bronto) |

If one of your connected model subscriptions (ChatGPT, Claude, or Grok) stops working and needs reconnecting, a banner at the top of every settings page links to it. Owners and admins also see teammates' expired subscriptions on **Settings → Integrations**, so they can ask those members to reconnect.

### Account

| Page | What's there |
| --- | --- |
| **Profile** | Your identity, [email](#change-your-email), a copyable user ID, and [account deletion](#delete-your-account) |
| **Preferences** | Theme, accessibility, keyboard shortcuts, and supported-device haptic feedback |
| **Notifications** | Route approvals, failed runs, finished runs, and failed PR checks to desktop, phone, or Slack; choose sounds and quiet hours |
| **Agent personalization** | Personal instructions, response verbosity, and code-comment style for runs you start |

Two-factor authentication and passkeys are also available under **Settings → Account**.

Under **Settings → Account → Notifications**, choose the destination for each event and check whether your desktop app, phone, or Slack connection is ready. You can pick a desktop sound or upload an MP3 up to 10 MB, suppress notifications for the thread you are viewing, delay a phone alert until a desktop alert goes unseen, and set quiet hours. Some listed events are not active yet; the settings page marks those choices so you can tell which notifications will actually arrive.

### Change your email

Change your address under **Settings → Account → Profile**. Hoplite sends one confirmation link to the new address, and the change takes effect when you open it. The new address has to pass the same email rules as a new signup. Changing your email requires a sign-in from the last 10 minutes, so if yours is older, Hoplite asks you to sign in again first.

Once the change completes, your previous address receives a notice with an **Undo change** link. It works once, expires after 7 days, and restores the previous address while signing out every session on the account, so use it if you didn't make the change.

### Delete your account

You can permanently delete your own account from the **Delete account** section of **Settings → Account → Profile**. The same option also appears on the onboarding screens, for accounts that haven't joined a workspace yet. Deletion erases your account and sign-in methods. It also deletes every workspace where you are the only member. You leave any workspace you share with others, and that workspace keeps its data.

Before you confirm, Hoplite lists each affected workspace, says whether it will be deleted or left, and shows anything that blocks the deletion:

- Agents or sandboxes are still running in a workspace that would be deleted. Stop or archive those threads first, and idle sandboxes shut down on their own shortly after.
- A workspace that would be deleted still has an active subscription or checkout. Cancel it under **Billing** first.
- You are the only owner of a workspace that other people still use. Make another member an owner first.

To confirm, you type your account email. The request must come from a sign-in made within the last 24 hours, so sign in again if yours is older. API keys and impersonated sessions can't delete an account. Once the deletion finishes, you are signed out. Deletion can't be undone, although an audit record of it is kept.

### Workspace

| Page | What's there |
| --- | --- |
| **General** | Workspace name, slug and ID, and the defaults every project and thread starts from |
| **Models** | Account order, fallback rules, compaction thresholds, and compatible Anthropic and OpenAI provider keys when BYOK is enabled; [model gateways](/docs/agent/models#model-gateways) (Neon, OpenRouter, Vercel, Cloudflare, or your own OpenAI-compatible endpoint) when custom gateways are enabled. Members can see what's connected; owners and admins change it |
| **Members** | Invites, roles, domain auto-join |
| **API keys** | Bearer tokens for scripts and API automation |
| **Billing** | [Credits, top-ups, and usage](/docs/workspace/billing) |
| **Usage** | [Spend by model, member, and project](/docs/workspace/billing#usage), with CSV export |

### Project

Project-scoped settings — repository and base branch, scripts, environment variables, sandbox runtime, MCP servers, and agent defaults — are covered in [Project settings](/docs/workspace/project-settings).

## In this section

- **[Project settings](/docs/workspace/project-settings)** — every project-scoped setting, and how repo-file config and Hoplite overrides resolve
- **[Billing](/docs/workspace/billing)** — prepaid credits, top-ups, what's metered, and usage attribution
- **[Security and data handling](/docs/workspace/security)** — how Hoplite isolates credentials, handles your data, and keeps you in control
- **[Troubleshooting](/docs/workspace/troubleshooting)** — answers to common install, import, thread, and sandbox questions

## Sitemap

Sitemap discovery is not enabled for this deployment.
