# Agent-Sicherheit Source: https://docs.cursor.com/de/account/agent-security Sicherheitsaspekte bei der Verwendung von Cursor Agent Prompt-Injection, KI-Halluzinationen und andere Probleme können dazu führen, dass sich KI unerwartet und potenziell bösartig verhält. Während wir weiter daran arbeiten, Prompt-Injection auf einer grundlegenderen Ebene zu lösen, bestehen unsere wichtigsten Schutzmechanismen in Cursor-Produkten aus Leitplanken für das Handeln eines Agents – einschließlich der standardmäßigen Anforderung einer manuellen Bestätigung für sensible Aktionen. Ziel dieses Dokuments ist es, unsere Leitplanken zu erklären und was du von ihnen erwarten kannst. Alle unten aufgeführten Steuerungen und Verhaltensweisen sind unsere Standard- und empfohlenen Einstellungen.
## First-party-Toolaufrufe
Cursor wird mit Tools ausgeliefert, die dem Agent helfen, dir beim Coden zu helfen. Dazu gehören Dateilesen, Bearbeitungen, das Ausführen von Terminalbefehlen, die Suche im Web nach Doku und mehr. Lese-Tools erfordern keine Freigabe (z. B. das Lesen von Dateien, die Suche im Code). Du kannst [.cursorignore](/de/context/ignore-files) verwenden, um dem Agent den Zugriff auf bestimmte Dateien komplett zu blockieren; ansonsten sind Lesevorgänge in der Regel ohne Freigabe erlaubt. Für Aktionen, die das Risiko der Exfiltration sensibler Daten bergen, verlangen wir eine explizite Freigabe. Das Ändern von Dateien im aktuellen Workspace erfordert keine explizite Freigabe, mit einigen Ausnahmen. Wenn ein Agent Dateien ändert, werden die Änderungen sofort auf die Festplatte geschrieben. Wir empfehlen, Cursor in versionierten Workspaces zu nutzen, sodass Dateiinhalte jederzeit zurückgesetzt werden können. Wir verlangen eine explizite Freigabe, bevor Dateien geändert werden, die die Konfiguration unserer IDE/CLI anpassen, z. B. die Workspace-Einstellungsdatei des Editors. Wenn bei dir ein automatisches Neuladen bei Dateänderungen aktiv ist, beachte, dass Agent-Änderungen an Dateien eine automatische Ausführung auslösen können, bevor du sie prüfen konntest. Jeder vom Agent vorgeschlagene Terminalbefehl erfordert standardmäßig eine Freigabe. Wir empfehlen, jeden Befehl zu prüfen, bevor der Agent ihn ausführt. Wenn du das Risiko akzeptierst, kannst du dem Agent erlauben, alle Befehle ohne Freigabe auszuführen. Wir bieten in Cursor eine [Allowlist](/de/agent/tools) an, betrachten sie jedoch nicht als Sicherheitskontrolle. Manche Nutzer erlauben bestimmte Befehle, aber das ist ein Best-Effort-System, und Umgehungen sind möglich. Wir empfehlen nicht „Run Everything“, da damit alle konfigurierten Allowlists umgangen werden.
## Aufrufe von Drittanbieter-Tools
Cursor ermöglicht das Einbinden externer Tools über [MCP](/de/context/mcp). Alle MCP-Verbindungen von Drittanbietern müssen ausdrücklich von dir genehmigt werden. Sobald du eine MCP-Verbindung genehmigt hast, muss in Agent Mode standardmäßig jeder vorgeschlagene Tool-Aufruf für jede externe MCP-Integration vor der Ausführung ausdrücklich bestätigt werden.
## Netzwerk-Anfragen
Netzwerk-Anfragen können von Angreifern genutzt werden, um Daten zu exfiltrieren. Wir unterstützen derzeit keine First‑Party‑Tools, die Netzwerk-Anfragen an andere Hosts als eine sehr kleine, ausgewählte Gruppe (z. B. GitHub) stellen, keine expliziten Linkabrufe und nur Websuche mit einer ausgewählten Gruppe von Anbietern. Beliebige Agenten‑Netzwerk-Anfragen werden in den Standardeinstellungen verhindert.
## Workspace-Trust
Die Cursor-IDE unterstützt die standardmäßige [Workspace-Trust](https://code.visualstudio.com/docs/editing/workspaces/workspace-trust)-Funktion, die *deaktiviert* ist. Workspace-Trust zeigt dir beim Öffnen eines neuen Workspaces einen Dialog, in dem du zwischen normalem und eingeschränktem Modus wählen kannst. Der eingeschränkte Modus deaktiviert AI und andere Features, für die Nutzer Cursor typischerweise verwenden. Wir empfehlen dafür andere Tools, z. B. einen einfachen Texteditor, wenn du mit Repos arbeitest, denen du nicht vertraust. Workspace-Trust kann in den Benutzereinstellungen aktiviert werden, indem du diese Schritte ausführst: 1. Öffne deine user settings.json-Datei 2. Füge die folgende Konfiguration hinzu: ```json theme={null} "security.workspace.trust.enabled": true ``` Diese Einstellung kann auch organisationsweit über Mobile-Device-Management-(MDM)-Lösungen erzwungen werden.
## Verantwortungsvolle Offenlegung
Wenn du glaubst, eine Sicherheitslücke in Cursor gefunden zu haben, folge bitte der Anleitung auf unserer GitHub-Sicherheitsseite und reiche den Bericht dort ein. Wenn du GitHub nicht nutzen kannst, erreichst du uns auch unter [security@cursor.com](mailto:security@cursor.com). Wir sagen zu, Meldungen über Sicherheitslücken innerhalb von 5 Werktagen zu bestätigen und sie so schnell wie möglich zu bearbeiten. Wir veröffentlichen die Ergebnisse als Sicherheitshinweise auf unserer GitHub-Sicherheitsseite. Kritische Vorfälle werden sowohl auf der GitHub-Sicherheitsseite als auch per E-Mail an alle Nutzer kommuniziert. # Abrechnung Source: https://docs.cursor.com/de/account/billing Verwaltung von Cursor-Abos, Erstattungen und Rechnungen
### Wie greife ich auf die Abrechnungseinstellungen zu?
Greif über das [Dashboard](https://cursor.com/dashboard) auf das Abrechnungsportal zu, indem du in deinem Dashboard auf „Billing“ klickst. Dadurch öffnet sich ein sicheres Portal für alle Abrechnungsaufgaben.
### Wie laufen Cursors Abrechnungszyklen?
Abrechnungszyklen laufen monatlich oder jährlich und beginnen an deinem Abo-Startdatum. Team-Accounts werden pro Sitzplatz abgerechnet, mit anteiliger Verrechnung für neue Mitglieder.
### Wie funktionieren Sitzplätze bei Team-Accounts?
Team-Accounts berechnen pro Sitzplatz (einer pro Teammitglied). Wenn du Mitglieder mitten im Zyklus hinzufügst, zahlst du nur für die verbleibende Zeit. Wenn ein Mitglied Credits genutzt hat und entfernt wird, bleibt sein Sitz bis zum Ende des Abrechnungszyklus belegt – anteilige Rückerstattungen gibt’s nicht. Team-Admins können Sitze über das Dashboard verwalten.
### Kann ich zwischen monatlicher und jährlicher Abrechnung wechseln?
Ja! So geht’s: **Pro-Plan** 1. Geh zum Cursor-[Dashboard](https://cursor.com/dashboard) 2. Klick links in der Seitenleiste auf „Billing and Invoices“, um zur Abrechnungsseite zu gelangen 3. Klick auf „Manage subscription“ 4. Klick auf „Update subscription“ 5. Wähl „Yearly“ oder „Monthly“ und klick dann auf „Continue“ **Teams-Plan** 1. Geh zum Cursor-[Dashboard](https://cursor.com/dashboard) 2. Klick links in der Seitenleiste auf „Billing and Invoices“, um zur Abrechnungsseite zu gelangen 3. Klick auf den Button „Upgrade Now“, um auf jährliche Abrechnung zu wechseln Du kannst nur selbst von monatlicher auf jährliche Abrechnung wechseln. Um von jährlicher auf monatliche Abrechnung zu wechseln, kontaktier uns unter [hi@cursor.com](mailto:hi@cursor.com).
### Wo finde ich meine Rechnungen?
Deinen kompletten Abrechnungsverlauf findest du im Abrechnungsportal. Dort kannst du aktuelle und frühere Rechnungen ansehen und herunterladen.
### Kann ich Rechnungen automatisch per E-Mail bekommen?
Rechnungen müssen derzeit manuell aus dem Abrechnungsportal heruntergeladen werden. Wir arbeiten an automatischen Rechnungs-E-Mails. Sobald verfügbar, kannst du dich dafür anmelden.
### Wie aktualisiere ich meine Abrechnungsinformationen?
Aktualisiere Zahlungsmethode, Firmenname, Adresse und Steuerinformationen im Abrechnungsportal. Wir verwenden Stripe für sichere Transaktionen. Änderungen wirken nur für zukünftige Rechnungen; historische Rechnungen können wir nicht anpassen.
### Wie kündige ich mein Abonnement?
Kündige dein Abo auf der Seite „Billing and Invoices“, indem du bei „Manage Subscription“ den Button „Cancel subscription“ klickst. Dein Zugriff bleibt bis zum Ende deines aktuellen Abrechnungszeitraums bestehen.
### Ich habe andere Abrechnungsprobleme. Wie bekomme ich Hilfe?
Für Abrechnungsfragen, die hier nicht beantwortet werden, schreib von der mit deinem Account verknüpften E-Mail-Adresse an [hi@cursor.com](mailto:hi@cursor.com). Bitte füge deine Account-Details und dein Anliegen bei. # Preise Source: https://docs.cursor.com/de/account/pricing Cursor‑Pläne und ihre Preise Du kannst Cursor kostenlos ausprobieren oder einen Einzel- oder Team‑Plan kaufen.
## Individuell
Alle individuellen Pläne enthalten: * Unbegrenzte Tab-Vervollständigungen * Erhöhte Agent-Nutzungslimits für alle Modelle * Zugriff auf Bugbot * Zugriff auf Background Agents Jeder Plan umfasst nutzungsbasierte Abrechnung zu den [API-Preisen](/de/models#model-pricing) für Modellinferenz: * Pro enthält \$20 an API-Agent-Nutzung + zusätzliche Bonusnutzung * Pro Plus enthält \$70 an API-Agent-Nutzung + zusätzliche Bonusnutzung * Ultra enthält \$400 an API-Agent-Nutzung + zusätzliche Bonusnutzung Wir arbeiten hart daran, dir zusätzliche Bonuskapazität über die garantierte enthaltene Nutzung hinaus bereitzustellen. Da verschiedene Modelle unterschiedliche API-Kosten haben, beeinflusst deine Modellauswahl den Token-Output und wie schnell deine enthaltene Nutzung aufgebraucht wird. Nutzung und Token-Aufschlüsselungen findest du in [deinem Dashboard](https://cursor.com/dashboard?tab=usage). Limit-Benachrichtigungen werden regelmäßig im Editor angezeigt. Nutzungslimits
### Wie viel Nutzung brauche ich?
Basierend auf unseren Nutzungsdaten kannst du mit folgenden Nutzungsstufen rechnen: * **Tägliche Tab-User**: Bleiben immer innerhalb von \$20 * **Gelegentliche Agent-User**: Bleiben oft innerhalb der enthaltenen \$20 * **Tägliche Agent-User**: Typischerweise $60–$100/Monat Gesamtnutzung * **Power-User (mehrere Agents/Automatisierung)**: Oft \$200+/Monat Gesamtnutzung Basierend auf unseren Nutzungsdaten entsprechen die Limits in etwa Folgendem für eine*n Median-User*in: * Pro: \~225 Sonnet‑4‑Requests, \~550 Gemini‑Requests oder \~500 GPT‑5‑Requests * Pro+: \~675 Sonnet‑4‑Requests, \~1.650 Gemini‑Requests oder \~1.500 GPT‑5‑Requests * Ultra: \~4.500 Sonnet‑4‑Requests, \~11.000 Gemini‑Requests oder \~10.000 GPT‑5‑Requests
### Was passiert, wenn ich mein Limit erreiche?
Wenn du dein monatlich enthaltenes Nutzungskontingent überschreitest, wirst du im Editor benachrichtigt und kannst Folgendes tun: * **On-Demand-Nutzung hinzufügen**: Cursor weiterhin zu den gleichen API-Preisen mit nutzungsbasierter Abrechnung verwenden * **Deinen Plan upgraden**: Auf eine höhere Stufe wechseln, um mehr inkludierte Nutzung zu erhalten On-Demand-Nutzung wird monatlich zu den gleichen Preisen wie deine inkludierte Nutzung abgerechnet. Anfragen werden niemals in Qualität oder Geschwindigkeit herabgestuft.
## Teams
Es gibt zwei Team-Pläne: Teams (\$40/Nutzer/Monat) und Enterprise (individuell). Team-Pläne bieten zusätzliche Features wie: * Erzwingen des Privacy Mode * Admin-Dashboard mit Nutzungsstatistiken * Zentrale Team-Abrechnung * SAML/OIDC-SSO Wir empfehlen Teams für alle, die sich gerne selbst versorgen. Wir empfehlen [Enterprise](/de/contact-sales) für Kunden, die Priority Support, geteilte Nutzung, Rechnungsstellung, SCIM oder erweiterte Sicherheitskontrollen benötigen. Erfahre mehr über die [Teams-Preise](/de/account/teams/pricing).
## Auto
Wenn du Auto aktivierst, wählt Cursor basierend auf der aktuellen Auslastung das Premium‑Modell aus, das am besten zur jeweiligen Aufgabe passt und die höchste Zuverlässigkeit bietet. Diese Funktion erkennt degradierte Output‑Performance und wechselt bei Bedarf automatisch das Modell, um das Problem zu beheben. Wir haben viel in die Qualität und Gesamtleistung von Auto investiert. Ab deiner nächsten Abrechnungsverlängerung nach dem 15. September wird Auto zu den folgenden API‑Tarifen abgerechnet. * **Input + Cache Write**: \$1.25 pro 1M Tokens * **Output**: \$6.00 pro 1M Tokens * **Cache Read**: \$0.25 pro 1M Tokens Sowohl der Editor als auch das Dashboard zeigen deinen Verbrauch an, einschließlich Auto. Wenn du ein Modell direkt auswählst, wird der Verbrauch zum Listen‑API‑Preis dieses Modells abgerechnet.
## Max-Modus
Bestimmte Modelle unterstützen den [Max-Modus](/de/models#max-mode), der längeres Reasoning und größere Kontextfenster mit bis zu 1 Mio. Tokens ermöglicht. Für die meisten Coding-Aufgaben ist der Max-Modus nicht nötig, kann aber bei komplexeren Anfragen hilfreich sein, insbesondere bei großen Dateien oder Codebases. Die Nutzung des Max-Modus verbraucht mehr Kontingent. Alle Anfragen und Token-Breakdowns findest du in [deinem Dashboard](https://cursor.com/dashboard?tab=usage).
## Bugbot
Bugbot ist ein eigenes Produkt, getrennt von Cursor-Abos, und hat seinen eigenen Preisplan. * **Pro** (\$40/Monat): Unbegrenzte Reviews für bis zu 200 PRs/Monat, unbegrenzter Zugriff auf Cursor Ask, Integration mit Cursor zum Beheben von Bugs sowie Zugriff auf Bugbot Rules * **Teams** (\$40/Nutzer/Monat): Unbegrenzte Code-Reviews für alle PRs, unbegrenzter Zugriff auf Cursor Ask, gemeinsamer Team-Pool für die Nutzung sowie erweiterte Regeln und Einstellungen * **Enterprise** (Individuell): Alles aus Teams plus erweiterte Analysen und Reports, priorisierter Support und Account-Management Erfahre mehr über die [Bugbot-Preise](https://cursor.com/bugbot#pricing).
## Background-Agent
Background-Agents werden zu den API-Preisen für das ausgewählte [Modell](/de/models) abgerechnet. Wenn du sie zum ersten Mal nutzt, wirst du gebeten, ein Ausgabenlimit für Background-Agents festzulegen. Compute für virtuelle Maschinen (VM) für Background-Agents wird künftig separat bepreist. # Admin-API Source: https://docs.cursor.com/de/account/teams/admin-api Greif per API auf Teammetriken, Nutzungsdaten und Ausgabeninformationen zu Die Admin-API gibt dir programmgesteuerten Zugriff auf die Daten deines Teams, darunter Mitgliederinfos, Nutzungsmetriken und Ausgabendetails. Bau eigene Dashboards und Monitoring-Tools oder integrier sie in bestehende Workflows. Die API ist in ihrer ersten Version. Wir erweitern die Funktionen basierend auf Feedback – sag uns, welche Endpunkte du brauchst!
## Authentifizierung
Alle API-Requests erfordern eine Authentifizierung mit einem API-Key. Nur Team-Admins können API-Keys erstellen und verwalten. API-Keys sind an die Organisation gebunden, für alle Admins sichtbar und bleiben unabhängig vom Kontostatus der ursprünglichen Erstellerperson.
### Erstellen eines API-Schlüssels
1. Navigier zu **cursor.com/dashboard** → Tab **Settings** → **Cursor Admin API Keys** 2. Klick auf **Create New API Key** 3. Gib deinem Schlüssel einen aussagekräftigen Namen (z. B. „Usage Dashboard Integration“) 4. Kopier den generierten Schlüssel sofort – du wirst ihn nicht wieder sehen Format: `key_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
### Verwende deinen API‑Schlüssel
Verwende deinen API‑Schlüssel als Benutzernamen bei der Basic-Authentifizierung: **Mit curl und Basic Auth:** ```bash theme={null} curl https://api.cursor.com/{route} -u API_KEY: ``` **Oder setz den Authorization-Header direkt:** ```bash theme={null} Authorization: Basic {base64_encode('API_KEY:')} ```
## Basis-URL
Alle API-Endpunkte verwenden: ``` https://api.cursor.com ```
## Endpoints
### Teammitglieder abrufen
Ruf alle Teammitglieder und ihre Details ab. ``` GET /teams/members ``` #### Antwort Gibt ein Array von Teammitgliedern (Objekten) zurück: ```typescript theme={null} { teamMembers: { name: string; email: string; role: 'owner' | 'member' | 'free-owner'; }[]; } ``` #### Beispielantwort ```json theme={null} { "teamMembers": [ { "name": "Alex", "email": "developer@company.com", "role": "Member" }, { "name": "Sam", "email": "admin@company.com", "role": "Owner" } ] } ``` #### Beispielanfrage ```bash theme={null} curl -X GET https://api.cursor.com/teams/members \ -u DEIN_API_KEY: ```
### Tägliche Nutzungsdaten abrufen
Hol dir detaillierte tägliche Nutzungsmetriken für dein Team für einen bestimmten Zeitraum. Liefert Einblicke in Code-Änderungen, die Nutzung von KI-Unterstützung und Akzeptanzraten. ``` POST /teams/daily-usage-data ``` #### Request Body
| Parameter | Typ | Erforderlich | Beschreibung | | :---------- | :----- | :----------- | :-------------------------------- | | `startDate` | number | Ja | Startdatum in Epoch-Millisekunden | | `endDate` | number | Ja | Enddatum in Epoch-Millisekunden |
Der Datumsbereich darf 90 Tage nicht überschreiten. Für längere Zeiträume bitte mehrere Anfragen stellen. #### Antwort ```typescript theme={null} { data: { date: number; isActive: boolean; totalLinesAdded: number; totalLinesDeleted: number; acceptedLinesAdded: number; acceptedLinesDeleted: number; totalApplies: number; totalAccepts: number; totalRejects: number; totalTabsShown: number; totalTabsAccepted: number; composerRequests: number; chatRequests: number; agentRequests: number; cmdkUsages: number; subscriptionIncludedReqs: number; apiKeyReqs: number; usageBasedReqs: number; bugbotUsages: number; mostUsedModel: string; applyMostUsedExtension?: string; tabMostUsedExtension?: string; clientVersion?: string; email?: string; }[]; period: { startDate: number; endDate: number; }; } ```
#### Antwortfelder
| Feld | Beschreibung | | :------------------------- | :---------------------------------------------------- | | `date` | Datum in Epoch-Millisekunden | | `isActive` | Nutzer an diesem Tag aktiv | | `totalLinesAdded` | Hinzugefügte Codezeilen | | `totalLinesDeleted` | Gelöschte Codezeilen | | `acceptedLinesAdded` | Hinzugefügte Zeilen aus akzeptierten KI-Vorschlägen | | `acceptedLinesDeleted` | Gelöschte Zeilen aus akzeptierten KI-Vorschlägen | | `totalApplies` | Apply-Operationen | | `totalAccepts` | Akzeptierte Vorschläge | | `totalRejects` | Abgelehnte Vorschläge | | `totalTabsShown` | Angezeigte Tab-Vervollständigungen | | `totalTabsAccepted` | Akzeptierte Tab-Vervollständigungen | | `composerRequests` | Composer-Anfragen | | `chatRequests` | Chat-Anfragen | | `agentRequests` | Agent-Anfragen | | `cmdkUsages` | Nutzungen der Befehlspalette (Cmd+K) | | `subscriptionIncludedReqs` | Inklusive Abo-Anfragen | | `apiKeyReqs` | API-Schlüssel-Anfragen | | `usageBasedReqs` | Nutzungsbasierte (Pay-per-Use) Anfragen | | `bugbotUsages` | Nutzungen der Bug-Erkennung | | `mostUsedModel` | Am häufigsten verwendetes KI-Modell | | `applyMostUsedExtension` | Am häufigsten verwendete Dateierweiterung bei Applies | | `tabMostUsedExtension` | Am häufigsten verwendete Dateierweiterung bei Tabs | | `clientVersion` | Cursor-Version | | `email` | Nutzer-E-Mail |
#### Beispiel-Antwort
```json theme={null} { "data": [ { "date": 1710720000000, "isActive": true, "totalLinesAdded": 1543, "totalLinesDeleted": 892, "acceptedLinesAdded": 1102, "acceptedLinesDeleted": 645, "totalApplies": 87, "totalAccepts": 73, "totalRejects": 14, "totalTabsShown": 342, "totalTabsAccepted": 289, "composerRequests": 45, "chatRequests": 128, "agentRequests": 12, "cmdkUsages": 67, "subscriptionIncludedReqs": 180, "apiKeyReqs": 0, "usageBasedReqs": 5, "bugbotUsages": 3, "mostUsedModel": "gpt-4", "applyMostUsedExtension": ".tsx", "tabMostUsedExtension": ".ts", "clientVersion": "0.25.1", "email": "developer@company.com" }, { "date": 1710806400000, "isActive": true, "totalLinesAdded": 2104, "totalLinesDeleted": 1203, "acceptedLinesAdded": 1876, "acceptedLinesDeleted": 987, "totalApplies": 102, "totalAccepts": 91, "totalRejects": 11, "totalTabsShown": 456, "totalTabsAccepted": 398, "composerRequests": 67, "chatRequests": 156, "agentRequests": 23, "cmdkUsages": 89, "subscriptionIncludedReqs": 320, "apiKeyReqs": 15, "usageBasedReqs": 0, "bugbotUsages": 5, "mostUsedModel": "claude-3-opus", "applyMostUsedExtension": ".py", "tabMostUsedExtension": ".py", "clientVersion": "0.25.1", "email": "developer@company.com" } ], "period": { "startDate": 1710720000000, "endDate": 1710892800000 } } ``` #### Beispielanfrage ```bash theme={null} curl -X POST https://api.cursor.com/teams/daily-usage-data \ -u DEIN_API_KEY: \ -H "Content-Type: application/json" \ -d '{ "startDate": 1710720000000, "endDate": 1710892800000 }' ```
### Ausgabendaten abrufen
Ruf Ausgabendaten für den aktuellen Kalendermonat mit Suche, Sortierung und Paginierung ab. ``` POST /teams/spend ``` #### Request-Body
| Parameter | Typ | Erforderlich | Beschreibung | | :-------------- | :----- | :----------- | :-------------------------------------------------------------- | | `searchTerm` | string | Nein | Suche in Benutzernamen und E-Mail-Adressen | | `sortBy` | string | Nein | Sortieren nach: `amount`, `date`, `user`. Standardmäßig: `date` | | `sortDirection` | string | Nein | Sortierrichtung: `asc`, `desc`. Standardmäßig: `desc` | | `page` | number | Nein | Seitennummer (1-indiziert). Standardmäßig: `1` | | `pageSize` | number | Nein | Ergebnisse pro Seite |
#### Antwort ```typescript theme={null} { teamMemberSpend: { spendCents: number; fastPremiumRequests: number; name: string; email: string; role: 'owner' | 'member' | 'free-owner'; hardLimitOverrideDollars: number; }[]; subscriptionCycleStart: number; totalMembers: number; totalPages: number; } ```
#### Antwortfelder
| Feld | Beschreibung | | :------------------------- | :--------------------------------------------------- | | `spendCents` | Gesamtausgaben in Cent | | `fastPremiumRequests` | Schnell-Premium-Modellanfragen | | `name` | Name des Mitglieds | | `email` | E-Mail des Mitglieds | | `role` | Teamrolle | | `hardLimitOverrideDollars` | Benutzerdefinierte Überschreibung des Ausgabenlimits | | `subscriptionCycleStart` | Beginn des Abrechnungszyklus (Epoch-Millisekunden) | | `totalMembers` | Gesamtzahl der Teammitglieder | | `totalPages` | Gesamtzahl der Seiten |
#### Beispiel-Antwort
```json theme={null} { "teamMemberSpend": [ { "spendCents": 2450, "fastPremiumRequests": 1250, "name": "Alex", "email": "developer@company.com", "role": "member", "hardLimitOverrideUSDR": 100 }, { "spendCents": 1875, "fastPremiumRequests": 980, "name": "Sam", "email": "admin@company.com", "role": "owner", "hardLimitOverrideUSDR": 0 }, ], "subscriptionCycleStart": 1708992000000, "totalMembers": 15, "totalPages": 1 } ```
#### Beispielanfragen
**Grundlegende Ausgabendaten:** ```bash theme={null} curl -X POST https://api.cursor.com/teams/spend \ -u YOUR_API_KEY: \ -H "Content-Type: application/json" \ -d '{}' ``` **Bestimmten User mit Pagination suchen:** ```bash theme={null} curl -X POST https://api.cursor.com/teams/spend \ -u YOUR_API_KEY: \ -H "Content-Type: application/json" \ -d '{ "searchTerm": "alex@company.com", "page": 2, "pageSize": 25 }' ```
### Nutzungsereignisse abrufen
Hol dir detaillierte Nutzungsereignisse für dein Team mit umfassenden Filter-, Such- und Paginierungsoptionen. Dieser Endpoint liefert granulare Einblicke in einzelne API-Aufrufe, die Nutzung von Modellen, den Tokenverbrauch und die Kosten. ``` POST /teams/filtered-usage-events ``` #### Request-Body
| Parameter | Typ | Erforderlich | Beschreibung | | :---------- | :----- | :----------- | :---------------------------------------------- | | `startDate` | number | Nein | Startdatum in Unix-Epoche (Millisekunden) | | `endDate` | number | Nein | Enddatum in Unix-Epoche (Millisekunden) | | `userId` | number | Nein | Nach bestimmter User-ID filtern | | `page` | number | Nein | Seitennummer (1-basiert). Standard: `1` | | `pageSize` | number | Nein | Anzahl der Ergebnisse pro Seite. Standard: `10` | | `email` | string | Nein | Nach der E-Mail-Adresse des Users filtern |
#### Antwort ```typescript theme={null} { totalUsageEventsCount: number; pagination: { numPages: number; currentPage: number; pageSize: number; hasNextPage: boolean; hasPreviousPage: boolean; }; usageEvents: { timestamp: string; model: string; kind: string; maxMode: boolean; requestsCosts: number; isTokenBasedCall: boolean; tokenUsage?: { inputTokens: number; outputTokens: number; cacheWriteTokens: number; cacheReadTokens: number; totalCents: number; }; isFreeBugbot: boolean; userEmail: string; }[]; period: { startDate: number; endDate: number; }; } ```
#### Erklärung der Response-Felder
| Field | Description | | :---------------------- | :------------------------------------------------------------------------ | | `totalUsageEventsCount` | Gesamtzahl der Nutzungsereignisse, die der Abfrage entsprechen | | `pagination` | Paginierungsmetadaten zur Navigation durch die Ergebnisse | | `timestamp` | Ereigniszeitstempel in Millisekunden seit Epoch | | `model` | Für die Anfrage verwendetes KI-Modell | | `kind` | Nutzungskategorie (z. B. „Usage-based“, „Included in Business“) | | `maxMode` | Ob der Max‑Modus aktiviert war | | `requestsCosts` | Kosten in Request‑Einheiten | | `isTokenBasedCall` | True, wenn das Ereignis nutzungsbasiert abgerechnet wird | | `tokenUsage` | Detaillierter Token‑Verbrauch (verfügbar, wenn isTokenBasedCall true ist) | | `isFreeBugbot` | Ob dies eine kostenlose Bugbot‑Nutzung war | | `userEmail` | E‑Mail des Users, der die Anfrage gestellt hat | | `period` | Datumsbereich der abgefragten Daten |
#### Beispiel-Antwort
```json theme={null} { "totalUsageEventsCount": 113, "pagination": { "numPages": 12, "currentPage": 1, "pageSize": 10, "hasNextPage": true, "hasPreviousPage": false }, "usageEvents": [ { "timestamp": "1750979225854", "model": "claude-4-opus", "kind": "Nutzungsbasiert", "maxMode": true, "requestsCosts": 5, "isTokenBasedCall": true, "tokenUsage": { "inputTokens": 126, "outputTokens": 450, "cacheWriteTokens": 6112, "cacheReadTokens": 11964, "totalCents": 20.18232 }, "isFreeBugbot": false, "userEmail": "developer@company.com" }, { "timestamp": "1750979173824", "model": "claude-4-opus", "kind": "Usage-based", "maxMode": true, "requestsCosts": 10, "isTokenBasedCall": true, "tokenUsage": { "inputTokens": 5805, "outputTokens": 311, "cacheWriteTokens": 11964, "cacheReadTokens": 0, "totalCents": 40.16699999999999 }, "isFreeBugbot": false, "userEmail": "developer@company.com" }, { "timestamp": "1750978339901", "model": "claude-4-sonnet-thinking", "kind": "In Business enthalten" "maxMode": true, "requestsCosts": 1.4, "isTokenBasedCall": false, "isFreeBugbot": false, "userEmail": "admin@company.com" } ], "period": { "startDate": 1748411762359, "endDate": 1751003762359 } } ```
#### Beispielanfragen
**Alle Nutzungsereignisse mit Standard-Paginierung abrufen:** ```bash theme={null} curl -X POST https://api.cursor.com/teams/filtered-usage-events \ -u YOUR_API_KEY: \ -H "Content-Type: application/json" \ -d '{}' ``` **Nach Datumsbereich und bestimmtem Nutzer filtern:** ```bash theme={null} curl -X POST https://api.cursor.com/teams/filtered-usage-events \ -u YOUR_API_KEY: \ -H "Content-Type: application/json" \ -d '{ "startDate": 1748411762359, "endDate": 1751003762359, "email": "developer@company.com", "page": 1, "pageSize": 25 }' ``` **Nutzungsereignisse für einen bestimmten User mit individueller Pagination abrufen:** ```bash theme={null} curl -X POST https://api.cursor.com/teams/filtered-usage-events \ -u YOUR_API_KEY: \ -H "Content-Type: application/json" \ -d '{ "userId": 12345, "page": 2, "pageSize": 50 }' ```
### Ausgabenlimit pro Nutzer festlegen
Lege Ausgabenlimits für einzelne Teammitglieder fest. So kannst du steuern, wie viel jede Person für die KI-Nutzung in deinem Team ausgeben darf. ``` POST /teams/user-spend-limit ``` **Rate-Limit:** 60 Anfragen pro Minute pro Team #### Request-Body
| Parameter | Type | Required | Description | | :------------------ | :----- | :------- | :------------------------------------------------------------------- | | `userEmail` | string | Yes | E-Mail-Adresse des Teammitglieds | | `spendLimitDollars` | number | Yes | Ausgabenlimit in US-Dollar (nur ganze Zahlen, keine Dezimalstellen). |
* Der Nutzer muss bereits Mitglied deines Teams sein * Es werden nur ganze Zahlen akzeptiert (keine Dezimalbeträge) * Wenn `spendLimitDollars` auf 0 gesetzt wird, ist das Limit \$0 #### Response Gibt eine standardisierte Antwort zurück, die Erfolg oder Fehler anzeigt: ```typescript theme={null} { outcome: 'success' | 'error'; message: string; } ```
#### Beispielantworten
**Limit erfolgreich gesetzt:** ```json theme={null} { "outcome": "success", "message": "Ausgabenlimit von $100 für den User developer@company.com festgelegt" } ``` **Fehlermeldung:** ```json theme={null} { "outcome": "error", "message": "Ungültiges E‑Mail-Format" } ```
#### Beispielanfragen
**Ausgabenlimit festlegen:** ```bash theme={null} curl -X POST https://api.cursor.com/teams/user-spend-limit \ -u YOUR_API_KEY: \ -H "Content-Type: application/json" \ -d '{ "userEmail": "developer@company.com", "spendLimitDollars": 100 }' ```
### Repo-Blocklists-API
Füge Repos hinzu und nutze Muster, um zu verhindern, dass Dateien oder Verzeichnisse für dein Team indexiert oder als Kontext verwendet werden.
#### Team-Repo-Blocklists abrufen
Alle für dein Team konfigurierten Repository-Blocklists abrufen. ``` GET /settings/repo-blocklists/repos ``` ##### Antwort Gibt ein Array von Blocklist-Objekten für Repositories zurück: ```typescript theme={null} { repos: { id: string; url: string; patterns: string[]; }[]; } ``` ##### Beispielantwort ```json theme={null} { "repos": [ { "id": "repo_123", "url": "https://github.com/company/sensitive-repo", "patterns": ["*.env", "config/*", "secrets/**"] }, { "id": "repo_456", "url": "https://github.com/company/internal-tools", "patterns": ["*"] } ] } ```
##### Beispielanfrage
```bash theme={null} curl -X GET https://api.cursor.com/settings/repo-blocklists/repos \ -u DEIN_API_KEY: ```
#### Repo-Blocklisten updaten/erstellen
Ersetze bestehende Repository-Blocklisten für die angegebenen Repos. *Hinweis: Dieser Endpunkt überschreibt nur die Muster für die angegebenen Repositories. Alle anderen Repos bleiben unverändert.* ``` POST /settings/repo-blocklists/repos/upsert ```
##### Request Body
| Parameter | Typ | Erforderlich | Beschreibung | | --------- | ----- | ------------ | --------------------------------------------- | | repos | array | Ja | Array von Blocklist-Objekten für Repositories | Jedes Repository-Objekt muss Folgendes enthalten: | Feld | Typ | Erforderlich | Beschreibung | | -------- | --------- | ------------ | ------------------------------------------------------------------------ | | url | string | Ja | Repository-URL, die blocklistet werden soll | | patterns | string\[] | Ja | Array von zu blockierenden Dateimustern (Glob-Muster werden unterstützt) |
##### Response
Gibt die aktualisierte Liste der Repository-Blocklists zurück: ```typescript theme={null} { repos: { id: string; url: string; patterns: string[]; }[]; } ```
##### Beispielanfrage
```bash theme={null} curl -X POST https://api.cursor.com/settings/repo-blocklists/repos/upsert \ -u YOUR_API_KEY: \ -H "Content-Type: application/json" \ -d '{ "repos": [ { "url": "https://github.com/company/sensitive-repo", "patterns": ["*.env", "config/*", "secrets/**"] }, { "url": "https://github.com/company/internal-tools", "patterns": ["*"] } ] }' ```
#### Repo-Blocklist löschen
Entferne ein bestimmtes Repository aus der Blocklist. ``` DELETE /settings/repo-blocklists/repos/:repoId ```
##### Parameter
| Parameter | Typ | Erforderlich | Beschreibung | | --------- | ------ | ------------ | ----------------------------------------------- | | repoId | string | Ja | ID der zu löschenden Blocklist des Repositories | ##### Antwort Gibt bei erfolgreichem Löschen 204 No Content zurück.
##### Beispielanfrage
```bash theme={null} curl -X DELETE https://api.cursor.com/settings/repo-blocklists/repos/repo_123 \ -u DEIN_API_SCHLÜSSEL: ```
#### Beispielmuster
Häufige Muster für die Blockliste: * `*` - gesamtes Repository blocken * `*.env` - alle .env-Dateien blocken * `config/*` - alle Dateien im Verzeichnis config blocken * `**/*.secret` - alle .secret-Dateien in beliebigen Unterverzeichnissen blocken * `src/api/keys.ts` - eine bestimmte Datei blocken # AI-Code-Tracking-API Source: https://docs.cursor.com/de/account/teams/ai-code-tracking-api Greife auf KI-generierte Code-Analysen für die Repositories deines Teams zu Greife auf KI-generierte Code-Analysen für die Repositories deines Teams zu. Dazu zählen die KI-Nutzung pro Commit sowie detaillierte, akzeptierte KI-Änderungen. Die API befindet sich in der ersten Version. Wir erweitern die Funktionen basierend auf Feedback – sag uns, welche Endpunkte du brauchst! * **Verfügbarkeit**: Nur für Enterprise-Teams * **Status**: Alpha (Response-Formate und Felder können sich ändern)
## Authentifizierung
Alle API-Anfragen erfordern eine Authentifizierung mit einem API-Schlüssel. Diese API verwendet dieselbe Admin-API-Authentifizierung wie andere Endpunkte. Ausführliche Hinweise zur Authentifizierung findest du unter [Admin-API-Authentifizierung](/de/account/teams/admin-api#authentication).
## Basis-URL
Alle API-Endpunkte verwenden: ``` https://api.cursor.com ```
## Ratenlimits
* 5 Anfragen pro Minute pro Team, pro Endpoint
## Abfrageparameter
Alle folgenden Endpunkte akzeptieren dieselben Abfrageparameter über den Query-String:
| Parameter | Typ | Erforderlich | Beschreibung | | | :---------- | :----- | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | `startDate` | string | date | Nein | ISO-Datums-String, das Literal "now" oder relative Tage wie "7d" (entspricht now - 7 days). Standard: now - 7 days | | `endDate` | string | date | Nein | ISO-Datums-String, das Literal "now" oder relative Tage wie "0d". Standard: now | | `page` | number | Nein | Seitennummer (1-basiert). Standard: 1 | | | `pageSize` | number | Nein | Ergebnisse pro Seite. Standard: 100, max.: 1000 | | | `user` | string | Nein | Optionaler Filter auf einen einzelnen User. Akzeptiert E-Mail (z. B. [developer@company.com](mailto:developer@company.com)), kodierte ID (z. B. user\_abc123...) oder numerische ID (z. B. 42) | |
Responses geben userId als kodierte externe ID mit dem Präfix user\_ zurück. Das ist für die API-Nutzung stabil.
## Semantik und Berechnung der Metriken
* **Quellen**: „TAB“ steht für akzeptierte Inline-Completions; „COMPOSER“ steht für akzeptierte Diffs aus Composer * **Zeilenmetriken**: tabLinesAdded/Deleted und composerLinesAdded/Deleted werden separat gezählt; nonAiLinesAdded/Deleted werden als max(0, totalLines - AI lines) abgeleitet * **Privacy-Mode**: Wenn im Client aktiviert, können einige Metadaten (wie fileName) ausgelassen werden * **Branch-Info**: isPrimaryBranch ist true, wenn der aktuelle Branch dem Standard-Branch des Repos entspricht; kann undefined sein, wenn Repo-Infos nicht verfügbar sind Du kannst diese Datei scannen, um nachzuvollziehen, wie Commits und Änderungen erkannt und gemeldet werden.
## Endpunkte
### AI-Commit-Metriken abrufen (JSON, paginiert)
Abrufe aggregierter Metriken pro Commit, die Zeilen TAB, COMPOSER und Nicht-AI zuordnen. ``` GET /analytics/ai-code/commits ```
#### Antwort
```typescript theme={null} { items: AiCommitMetric[]; totalCount: number; page: number; pageSize: number; } ```
#### AiCommitMetric-Felder
| Feld | Typ | Beschreibung | | | :--------------------- | :------ | :---------------------------------------- | ------------------------------- | | `commitHash` | string | Git-Commit-Hash | | | `userId` | string | Kodierte Benutzer-ID (z. B. user\_abc123) | | | `userEmail` | string | E-Mail-Adresse des Users | | | `repoName` | string | null | Repositoryname | | `branchName` | string | null | Branchname | | `isPrimaryBranch` | boolean | null | Ob dies der primäre Branch ist | | `totalLinesAdded` | number | Insgesamt hinzugefügte Zeilen im Commit | | | `totalLinesDeleted` | number | Insgesamt gelöschte Zeilen im Commit | | | `tabLinesAdded` | number | Über Tab-Completions hinzugefügte Zeilen | | | `tabLinesDeleted` | number | Über Tab-Completions gelöschte Zeilen | | | `composerLinesAdded` | number | Über Composer hinzugefügte Zeilen | | | `composerLinesDeleted` | number | Über Composer gelöschte Zeilen | | | `nonAiLinesAdded` | number | null | Nicht-AI-Zeilen hinzugefügt | | `nonAiLinesDeleted` | number | null | Nicht-AI-Zeilen gelöscht | | `message` | string | null | Commit-Nachricht | | `commitTs` | string | null | Commit-Zeitstempel (ISO-Format) | | `createdAt` | string | Ingestionszeitstempel (ISO-Format) | |
#### Beispielantwort ```json theme={null} { "items": [ { "commitHash": "a1b2c3d4", "userId": "user_3k9x8q...", "userEmail": "developer@company.com", "repoName": "company/repo", "branchName": "main", "isPrimaryBranch": true, "totalLinesAdded": 120, "totalLinesDeleted": 30, "tabLinesAdded": 50, "tabLinesDeleted": 10, "composerLinesAdded": 40, "composerLinesDeleted": 5, "nonAiLinesAdded": 30, "nonAiLinesDeleted": 15, "message": "Refactor: Analytics-Client extrahiert" "commitTs": "2025-07-30T14:12:03.000Z", "createdAt": "2025-07-30T14:12:30.000Z" } ], "totalCount": 42, "page": 1, "pageSize": 100 } ```
#### Beispielanfragen
**Einfache Anfrage:** ```bash theme={null} curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \ -u DEIN_API_KEY: ``` **Nach Benutzer filtern (E-Mail):** ```bash theme={null} curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=2025-06-01T00:00:00Z&endDate=now&user=developer@company.com" \ -u DEIN_API_SCHLÜSSEL: ```
### AI-Commit-Metriken herunterladen (CSV, Streaming)
Commit-Metriken als CSV für große Datenauszüge herunterladen. ``` GET /analytics/ai-code/commits.csv ```
#### Antwort
Header: * Content-Type: text/csv; charset=utf-8
#### CSV-Spalten
| Spalte | Typ | Beschreibung | | :----------------------- | :------ | :----------------------------------------------- | | `commit_hash` | string | Git-Commit-Hash | | `user_id` | string | Kodierte Nutzer-ID | | `user_email` | string | E-Mail-Adresse des Nutzers | | `repo_name` | string | Repository-Name | | `branch_name` | string | Branch-Name | | `is_primary_branch` | boolean | Ob dies der primäre Branch ist | | `total_lines_added` | number | Insgesamt im Commit hinzugefügte Zeilen | | `total_lines_deleted` | number | Insgesamt im Commit gelöschte Zeilen | | `tab_lines_added` | number | Über Tab-Vervollständigungen hinzugefügte Zeilen | | `tab_lines_deleted` | number | Über Tab-Vervollständigungen gelöschte Zeilen | | `composer_lines_added` | number | Über Composer hinzugefügte Zeilen | | `composer_lines_deleted` | number | Über Composer gelöschte Zeilen | | `non_ai_lines_added` | number | Nicht-AI-Zeilen hinzugefügt | | `non_ai_lines_deleted` | number | Nicht-AI-Zeilen gelöscht | | `message` | string | Commit-Nachricht | | `commit_ts` | string | Commit-Zeitstempel (ISO-Format) | | `created_at` | string | Erfassungszeitpunkt (ISO-Format) |
#### Beispielausgabe (CSV)
```csv theme={null} commit_hash,user_id,user_email,repo_name,branch_name,is_primary_branch,total_lines_added,total_lines_deleted,tab_lines_added,tab_lines_deleted,composer_lines_added,composer_lines_deleted,non_ai_lines_added,non_ai_lines_deleted,message,commit_ts,created_at a1b2c3d4,user_3k9x8q...,developer@company.com,company/repo,main,true,120,30,50,10,40,5,30,15,"Refactor: Analytics-Client ausgelagert",2025-07-30T14:12:03.000Z,2025-07-30T14:12:30.000Z e5f6g7h8,user_3k9x8q...,developer@company.com,company/repo,feature-branch,false,85,15,30,5,25,3,30,7,"Fehlerbehandlung hinzugefügt",2025-07-30T13:45:21.000Z,2025-07-30T13:45:45.000Z ```
#### Beispielanfrage
```bash theme={null} curl -L "https://api.cursor.com/analytics/ai-code/commits.csv?startDate=2025-07-01T00:00:00Z&endDate=now&user=user_3k9x8q..." \ -u DEIN_API_KEY: \ -o commits.csv ```
### AI-Code-Change-Metriken abrufen (JSON, paginiert)
Ruf detaillierte, akzeptierte AI-Änderungen ab, gruppiert nach deterministischer changeId. Nützlich, um akzeptierte AI-Events unabhängig von Commits zu analysieren. ``` GET /analytics/ai-code/changes ```
#### Antwort
```typescript theme={null} { items: AiCodeChangeMetric[]; totalCount: number; page: number; pageSize: number; } ```
#### AiCodeChangeMetric-Felder
| Feld | Typ | Beschreibung | | | :------------------ | :----- | :----------------------------------------------------------------- | ---------------------- | | `changeId` | string | Deterministische ID der Änderung | | | `userId` | string | Kodierte User-ID (z. B. user\_abc123) | | | `userEmail` | string | E-Mail-Adresse des Users | | | `source` | "TAB" | "COMPOSER" | Quelle der KI-Änderung | | `model` | string | null | Verwendetes KI-Modell | | `totalLinesAdded` | number | Gesamtzahl hinzugefügter Zeilen | | | `totalLinesDeleted` | number | Gesamtzahl gelöschter Zeilen | | | `createdAt` | string | Ingestions-Timestamp (ISO-Format) | | | `metadata` | Array | Dateimetadaten (fileName kann im Privacy-Modus weggelassen werden) | |
#### Beispiel-Response
```json theme={null} { "items": [ { "changeId": "749356201", "userId": "user_3k9x8q...", "userEmail": "developer@company.com", "source": "COMPOSER", "model": null, "totalLinesAdded": 18, "totalLinesDeleted": 4, "createdAt": "2025-07-30T15:10:12.000Z", "metadata": [ { "fileName": "src/analytics/report.ts", "fileExtension": "ts", "linesAdded": 12, "linesDeleted": 3 }, { "fileName": "src/analytics/ui.tsx", "fileExtension": "tsx", "linesAdded": 6, "linesDeleted": 1 } ] } ], "totalCount": 128, "page": 1, "pageSize": 200 } ```
#### Beispielanfragen
**Einfache Anfrage:** ```bash theme={null} curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \ -u DEIN_API_KEY: ``` **Nach User filtern (kodierte ID):** ```bash theme={null} curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \ -u DEIN_API_KEY: ``` **Nach Benutzer filtern (E-Mail):** ```bash theme={null} curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \ -u DEIN_API_KEY: ```
### AI-Code-Änderungsmetriken herunterladen (CSV, Streaming)
Lad Änderungsmetriken als CSV für umfangreiche Datenextraktionen herunter. ``` GET /analytics/ai-code/changes.csv ```
#### Antwort
Headers: * Content-Type: text/csv; charset=utf-8
#### CSV-Spalten
| Spalte | Typ | Beschreibung | | :-------------------- | :----- | :------------------------------------------------ | | `change_id` | string | Deterministische ID der Änderung | | `user_id` | string | Kodierte Benutzer-ID | | `user_email` | string | E‑Mail-Adresse des Users | | `source` | string | Quelle der KI-Änderung (TAB oder COMPOSER) | | `model` | string | Verwendetes KI-Modell | | `total_lines_added` | number | Gesamtzahl hinzugefügter Zeilen | | `total_lines_deleted` | number | Gesamtzahl gelöschter Zeilen | | `created_at` | string | Ingestions-Timestamp (ISO-Format) | | `metadata_json` | string | JSON-serialisiertes Array von Metadaten-Einträgen |
#### Hinweise
* metadata\_json ist ein JSON-serialisiertes Array von Metadaten-Einträgen (im Datenschutzmodus kann fileName entfallen) * Beim Verarbeiten von CSV unbedingt gequotete Felder korrekt parsen
#### Beispielausgabe (CSV)
```csv theme={null} change_id,user_id,user_email,source,model,total_lines_added,total_lines_deleted,created_at,metadata_json 749356201,user_3k9x8q...,developer@company.com,COMPOSER,gpt-4o,18,4,2025-07-30T15:10:12.000Z,"[{""fileName"":""src/analytics/report.ts"",""fileExtension"":""ts"",""linesAdded"":12,""linesDeleted"":3},{""fileName"":""src/analytics/ui.tsx"",""fileExtension"":""tsx"",""linesAdded"":6,""linesDeleted"":1}]" 749356202,user_3k9x8q...,developer@company.com,TAB,,8,2,2025-07-30T15:08:45.000Z,"[{""fileName"":""src/utils/helpers.ts"",""fileExtension"":""ts"",""linesAdded"":8,""linesDeleted"":2}]" ```
#### Beispielanfrage
```bash theme={null} curl -L "https://api.cursor.com/analytics/ai-code/changes.csv?startDate=30d&endDate=now" \ -u DEIN_API_KEY: \ -o changes.csv ```
## Tipps
* Verwende den Parameter `user`, um schnell einen einzelnen User über alle Endpunkte zu filtern * Für große Datenextraktionen nutze lieber die CSV-Endpunkte — sie streamen serverseitig in Seiten mit 10.000 Einträgen * `isPrimaryBranch` kann undefined sein, wenn der Client den Default-Branch nicht auflösen konnte * `commitTs` ist der Commit-Zeitstempel; `createdAt` ist die Zeit, zu der die Daten auf unseren Servern ingestiert wurden * Einige Felder können fehlen, wenn der Privacy-Mode im Client aktiviert ist
## Changelog
* **Alpha-Release**: Erste Endpunkte für Commits und Änderungen. Response-Formate können sich anhand von Feedback weiterentwickeln # Analytics Source: https://docs.cursor.com/de/account/teams/analytics Teamnutzung und Aktivitätsmetriken nachverfolgen Team-Admins können Metriken im [Dashboard](/de/account/teams/dashboard) nachverfolgen.
### Gesamtnutzung
Sieh dir aggregierte Kennzahlen für dein Team an, inklusive Gesamtzahl der Tabs und Premium-Anfragen. Für Teams, die jünger als 30 Tage sind, zeigen die Kennzahlen die Nutzung seit der Erstellung, einschließlich der Aktivität von Teammitgliedern vor ihrem Beitritt.
### Pro aktiver Nutzer
Sieh dir durchschnittliche Kennzahlen pro aktivem Nutzer an: akzeptierte Tabs, Codezeilen und Premium-Anfragen.
### Nutzeraktivität
Verfolge wöchentlich und monatlich aktive Nutzer.
## Kopfzeilen des Analytics-Berichts
Wenn du Analysedaten aus dem Dashboard exportierst, enthält der Bericht detaillierte Metriken zum Nutzerverhalten und zur Funktionsnutzung. Das bedeuten die einzelnen Kopfzeilen:
### Nutzerinformationen
Das Datum, an dem die Analysedaten aufgezeichnet wurden (z. B. 2024-01-15T04:30:00.000Z) Eindeutiger Bezeichner für jeden Nutzer im System E-Mail-Adresse des Nutzers, die mit seinem Konto verknüpft ist Gibt an, ob der Nutzer an diesem Datum aktiv war
### KI-generierte Code-Metriken
Gesamtzahl der vom KI-Chat vorgeschlagenen hinzugefügten Codezeilen Gesamtzahl der vom KI-Chat vorgeschlagenen zu löschenden Codezeilen KI-vorgeschlagene Zeilen, die der Nutzer akzeptiert und seinem Code hinzugefügt hat Vom Nutzer akzeptierte KI-vorgeschlagene Löschungen
### Metriken zur Funktionsnutzung
Anzahl der Male, die ein Nutzer KI-generierte Änderungen aus dem Chat angewendet hat Anzahl der Male, die ein Nutzer KI-Vorschläge akzeptiert hat Anzahl der Male, die ein Nutzer KI-Vorschläge abgelehnt hat Anzahl der Male, die KI-Vorschlags-Tabs dem Nutzer angezeigt wurden Vom Nutzer akzeptierte KI-Vorschlags-Tabs
### Metriken nach Anfragetyp
Anfragen über die Composer/Edit-Funktion (Cmd+K Inline-Edits) Chat-Anfragen, bei denen Nutzer der KI Fragen gestellt haben Anfragen an KI-Agents (spezialisierte KI-Assistenten) Anzahl der Nutzungen der Cmd+K- (oder Ctrl+K-) Befehlspalette
### Abonnement- und API-Metriken
KI-Anfragen, die durch den Abonnementplan des Nutzers abgedeckt sind Anfragen, die mit API-Schlüsseln für programmatischen Zugriff gestellt wurden Anfragen, die zur nutzungsbasierten Abrechnung zählen
### Zusätzliche Features
Anzahl der Nutzungen der KI-Funktion zur Fehlererkennung/-behebung
### Konfigurationsinformationen
Das KI-Modell, das der Nutzer am häufigsten verwendet hat (z. B. GPT-4, Claude) Am häufigsten verwendete Dateierweiterung beim Anwenden von KI-Vorschlägen (z. B. .ts, .py, .java) Am häufigsten verwendete Dateierweiterung bei Tab-Completion-Features Verwendete Version des Cursor-Editors
### Berechnete Metriken
Der Bericht enthält außerdem aufbereitete Daten, die helfen, den KI-Codebeitrag zu verstehen: * Total Lines Added/Deleted: Rohanzahl aller Codeänderungen * Accepted Lines Added/Deleted: Zeilen, die aus KI-Vorschlägen stammen und akzeptiert wurden * Composer Requests: Anfragen über die Inline-Composer-Funktion * Chat Requests: Anfragen über die Chat-Oberfläche Alle numerischen Werte sind standardmäßig 0, wenn nicht vorhanden, boolesche Werte sind standardmäßig false und Zeichenfolgenwerte sind standardmäßig leere Strings. Metriken werden pro Nutzer auf Tagesebene aggregiert. # Analytics V2 Source: https://docs.cursor.com/de/account/teams/analyticsV2 Erweiterte Nachverfolgung von Teamnutzung und Aktivitätsmetriken Wir arbeiten an einem V2-Release unserer Analytics-Infrastruktur. Dazu gehört ein Refactor der Art und Weise, wie wir verschiedene Metriken erfassen. Ab dem **1. September 2025** und für Nutzer auf **Cursor Version 1.5** verwenden die Analytics unsere V2-Infrastruktur. Frühere Versionen haben verschiedene Metriken zu niedrig erfasst, darunter: * Gesamtzahl akzeptierter Codezeilen * Gesamtzahl vorgeschlagener Codezeilen * Gesamtzahl akzeptierter Tabs Bleib dran, während wir weiter in Analytics investieren und neue Features in diesem Bereich veröffentlichen. # Dashboard Source: https://docs.cursor.com/de/account/teams/dashboard Verwalte Abrechnung, Nutzung und Teameinstellungen über dein Dashboard Über das Dashboard kannst du die Abrechnung verwalten, nutzungsbasierte Preisgestaltung einrichten und dein Team managen.
## Übersicht
Hol dir eine schnelle Zusammenfassung der Teamaktivität, Nutzungsstatistiken und jüngsten Änderungen. Die Übersichtsseite bietet dir auf einen Blick Einblicke in deinen Workspace.
## Einstellungen
Konfigurier teamweite Einstellungen und Sicherheitsoptionen. Die Seite „Einstellungen“ beinhaltet: ## Teams- & Enterprise-Einstellungen Steuer die Datenfreigabe-Einstellungen für dein Team. Konfigurier Zero-Data-Retention-Richtlinien mit KI-Providern (OpenAI, Anthropic, Google Vertex AI, xAI Grok) und verwalt die teamweite Datenschutzdurchsetzung. {" "} Aktivier nutzungsbasierte Abrechnung und setz Ausgabenlimits. Konfigurier monatliche Team-Ausgabenlimits und optionale Limits pro Nutzer. Steuer, ob nur Admins diese Einstellungen ändern dürfen. {" "} Konfigurier AWS-Bedrock-IAM-Rollen für eine sichere Cloud-Integration. {" "} Richt SSO-Authentifizierung für Enterprise-Teams ein, um den Zugriff zu vereinfachen und die Sicherheit zu verbessern. {" "} Erstell und verwalt API-Schlüssel für den programmatischen Zugriff auf die Admin-Funktionen von Cursor. {" "} Überwach und verwalt aktive Sitzungen in deinem Team. Erstell und verwalt Einladungscodes, um neue Teammitglieder hinzuzufügen. Greif auf die REST-API-Endpunkte von Cursor für die programmatische Integration zu. Alle API-Endpunkte sind in den Team- und Enterprise-Plänen verfügbar, außer der [AI Code Tracking API](/de/docs/account/teams/ai-code-tracking-api), die eine Enterprise-Mitgliedschaft erfordert.
## Exklusive Enterprise-Einstellungen
{" "} Steuere, welche KI-Modelle für Teammitglieder verfügbar sind. Setze Einschränkungen für bestimmte Modelle oder Modellstufen, um Kosten zu kontrollieren und eine angemessene Nutzung in deiner Organisation sicherzustellen. {" "} Konfiguriere die automatische Befehlsausführung für Cursor Version 0.49 und höher. Lege fest, welche Befehle automatisch ausgeführt werden dürfen, und setze Sicherheitsrichtlinien für die Codeausführung. Verhindere den Zugriff auf bestimmte Repositories aus Sicherheits- oder Compliance-Gründen. {" "} Konfiguriere die Model Context Protocol-Einstellungen für Cursor Version 0.51 und höher. Steuere, wie Modelle auf Kontext aus deiner Entwicklungsumgebung zugreifen und ihn verarbeiten. {" "} Richte Ignore-Muster für Dateien und Verzeichnisse in Cursor Version 0.50 und höher ein. Steuere, welche Dateien und Verzeichnisse von der KI-Analyse und -Vorschlägen ausgeschlossen werden. Schütze das .cursor-Verzeichnis vor unbefugtem Zugriff in Version 0.51 und höher. Stelle sicher, dass sensible Konfigurations- und Cache-Dateien geschützt bleiben. Greife auf detaillierte Analysen zu KI-generiertem Code für die Repositories deines Teams zu. Rufe pro Commit KI-Nutzungsmetriken und granulare übernommene KI-Änderungen über REST-API-Endpunkte ab. Erfordert einen Enterprise-Plan. Mehr Infos findest du [hier](/de/account/teams/ai-code-tracking-api). **SCIM** (System for Cross-domain Identity Management)-Provisioning ist auch für Enterprise-Pläne verfügbar. Sieh dir unsere [SCIM- Dokumentation](/de/account/teams/scim) für Setup-Anleitungen an.
## Mitglieder
Verwalte deine Teammitglieder, lade neue Nutzer ein und steuere die Zugriffsrechte. Lege rollenbasierte Berechtigungen fest und behalte die Aktivitäten deiner Mitglieder im Blick.
## Integrationen
{" "} Verbinde Cursor mit deinen Lieblings-Tools und -Diensten. Richte Integrationen mit Versionskontrollsystemen, Projektmanagement-Tools und anderen Entwickler-Services ein.
## Hintergrund-Agents
{" "} Überwache und verwalte Hintergrund-Agents, die in deinem Workspace laufen. Schau dir den Agent-Status, Logs und die Ressourcennutzung an.
## Bugbot
Nutze automatisierte Funktionen zur Fehlererkennung und -behebung. Bugbot hilft dir, häufige Probleme in deiner Codebasis automatisch zu identifizieren und zu lösen. Bugbot-Code-Review
## Active-Directory-Verwaltung
Für Enterprise-Teams: Verwalte Benutzeranmeldung und Zugriffsrechte über die Active-Directory-Integration. Konfiguriere SSO und die automatische Benutzerbereitstellung (User Provisioning).
## Nutzung
Verfolge detaillierte Nutzungsmetriken, inklusive AI-Anfragen, Modellnutzung und Ressourcenverbrauch. Behalte die Nutzung teamweit und projektübergreifend im Blick. ## Abrechnung & Rechnungen Verwalte dein Abo, aktualisiere Zahlungsmethoden und greif auf deinen Abrechnungsverlauf zu. Lade Rechnungen herunter und verwalte Einstellungen für nutzungsbasierte Abrechnung. # Enterprise-Einstellungen Source: https://docs.cursor.com/de/account/teams/enterprise-settings Cursor-Einstellungen zentral für deine Organisation verwalten
# Enterprise-Einstellungen
Du kannst bestimmte Funktionen von Cursor zentral über Gerätemanagementlösungen verwalten, damit sie den Anforderungen deiner Organisation entsprechen. Wenn du eine Cursor-Richtlinie festlegst, überschreibt deren Wert die entsprechende Cursor-Einstellung auf den Geräten der Nutzer. Einstellungseditor, der zeigt, dass die Einstellung „Extensions: Allowed“ von der Organisation verwaltet wird. Cursor stellt derzeit Richtlinien zur Steuerung der folgenden administratorgesteuerten Funktionen bereit: | Policy | Description | Cursor setting | Available since | | ----------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------ | --------------- | | AllowedExtensions | Steuert, welche Erweiterungen installiert werden können. | extensions.allowed | 1.2 | | AllowedTeamId | Steuert, welche Team-IDs sich anmelden dürfen. Nutzer mit nicht autorisierten Team-IDs werden zwangsweise abgemeldet. | cursorAuth.allowedTeamId | 1.3 |
## Zugelassene Erweiterungen konfigurieren
Die Cursor-Einstellung `extensions.allowed` legt fest, welche Erweiterungen installiert werden können. Diese Einstellung erwartet ein JSON-Objekt, in dem die Schlüssel Publisher-Namen sind und die Werte Booleans, die angeben, ob Erweiterungen dieses Publishers erlaubt sind. Wenn du zum Beispiel `extensions.allowed` auf `{"anysphere": true, "github": true}` setzt, sind Erweiterungen der Publisher Anysphere und GitHub erlaubt, während `{"anysphere": false}` Anysphere-Erweiterungen blockiert. Um zugelassene Erweiterungen zentral für deine Organisation zu verwalten, konfiguriere die Richtlinie `AllowedExtensions` über deine Device-Management-Lösung. Diese Richtlinie überschreibt die Einstellung `extensions.allowed` auf den Geräten der Nutzer. Der Wert dieser Richtlinie ist ein JSON-String, der die erlaubten Publisher definiert. Wenn du mehr über Erweiterungen in Cursor erfahren willst, schau dir die Extensions-Dokumentation an.
## Zulässige Team-IDs konfigurieren
Die Cursor-Einstellung `cursorAuth.allowedTeamId` legt fest, welche Team-IDs sich bei Cursor anmelden dürfen. Diese Einstellung akzeptiert eine kommagetrennte Liste von Team-IDs, die für den Zugriff autorisiert sind. Wenn du `cursorAuth.allowedTeamId` zum Beispiel auf `"1,3,7"` setzt, können sich Nutzerinnen und Nutzer mit genau diesen Team-IDs anmelden. Wenn jemand versucht, sich mit einer nicht zugelassenen Team-ID anzumelden: * Die Person wird sofort abgemeldet * Eine Fehlermeldung wird angezeigt * Die Anwendung blockiert weitere Authentifizierungsversuche, bis eine gültige Team-ID verwendet wird Um zulässige Team-IDs zentral für deine Organisation zu verwalten, konfiguriere die Richtlinie `AllowedTeamId` über deine Geräteverwaltung. Diese Richtlinie überschreibt die Einstellung `cursorAuth.allowedTeamId` auf den Geräten der Nutzerinnen und Nutzer. Der Wert dieser Richtlinie ist ein String mit der kommagetrennten Liste der autorisierten Team-IDs.
## Gruppenrichtlinie unter Windows
Cursor unterstützt Windows-Registry-basierte Gruppenrichtlinien. Wenn Richtliniendefinitionen installiert sind, kannst du den Local Group Policy Editor verwenden, um die Richtlinienwerte zu verwalten. So fügst du eine Richtlinie hinzu: 1. Kopiere die ADMX- und ADML-Dateien für Policies aus `AppData\Local\Programs\cursor\policies`. 2. Füge die ADMX-Datei in das Verzeichnis `C:\Windows\PolicyDefinitions` ein und die ADML-Datei in das Verzeichnis `C:\Windows\PolicyDefinitions\\`. 3. Starte den Local Group Policy Editor neu. 4. Setze die entsprechenden Richtlinienwerte (z. B. `{"anysphere": true, "github": true}` für die Richtlinie `AllowedExtensions`) im Local Group Policy Editor. Richtlinien können sowohl auf Computer- als auch auf Benutzerebene gesetzt werden. Wenn beide gesetzt sind, hat die Computerebene Vorrang. Wenn ein Richtlinienwert gesetzt ist, überschreibt er die in Cursor konfigurierte Einstellung auf jeder Ebene (Standard, Benutzer, Workspace usw.).
## Konfigurationsprofile unter macOS
Konfigurationsprofile verwalten Einstellungen auf macOS‑Geräten. Ein Profil ist eine XML-Datei mit Schlüssel/Wert-Paaren, die den verfügbaren Richtlinien entsprechen. Diese Profile können über Mobile-Device-Management-(MDM)-Lösungen bereitgestellt oder manuell installiert werden. Ein Beispiel für eine `.mobileconfig`-Datei für macOS ist unten dargestellt: ``` PayloadContent PayloadDisplayName Cursor PayloadIdentifier com.todesktop.230313mzl4w4u92.J6B5723A-6539-4F31-8A4E-3CC96E51F48C PayloadType com.todesktop.230313mzl4w4u92 PayloadUUID J6B5723A-6539-4F31-8A4E-3CC96E51F48C PayloadVersion 1 AllowedExtensions {"anysphere":true} AllowedTeamId 1,2 PayloadDescription This profile manages Cursor. PayloadDisplayName Cursor PayloadIdentifier com.todesktop.230313mzl4w4u92 PayloadOrganization Anysphere PayloadType Configuration PayloadUUID F2C1A7B3-9D4E-4B2C-8E1F-7A6C5D4B3E2F PayloadVersion 1 TargetDeviceType 5 ```
### String-Richtlinien
Das folgende Beispiel zeigt die Konfiguration der Richtlinie `AllowedExtensions`. Der Richtlinienwert ist in der Beispieldatei zunächst leer (es sind keine Erweiterungen erlaubt). ``` ErlaubteErweiterungen ``` Füg die passende JSON-Zeichenfolge, die deine Policy definiert, zwischen die ``-Tags ein. ``` ZugelasseneErweiterungen {"anysphere": true, "github": true} ``` Für die Richtlinie `AllowedTeamId` die durch Kommas getrennte Liste der Team-IDs hinzufügen: ``` ZulässigeTeamId 1,3,7 ``` **Wichtig:** Die bereitgestellte `.mobileconfig`-Datei setzt **alle** in dieser Cursor-Version verfügbaren Richtlinien. Lösch alle Richtlinien, die du nicht brauchst. Wenn du eine Richtlinie in der Beispiel-`.mobileconfig` nicht bearbeitest oder entfernst, wird sie mit ihrem standardmäßigen (restriktiven) Wert erzwungen. Installier ein Konfigurationsprofil manuell, indem du im Finder doppelt auf das `.mobileconfig`-Profil klickst und es anschließend in den Systemeinstellungen unter **Allgemein** > **Geräteverwaltung** aktivierst. Wenn du das Profil aus den Systemeinstellungen entfernst, werden die Richtlinien in Cursor ebenfalls entfernt. Mehr Infos zu Konfigurationsprofilen findest du in der Apple-Dokumentation.
## Zusätzliche Richtlinien
Ziel ist es, die aktuellen Cursor-Einstellungen als Richtlinien zu übernehmen und sich eng an die bestehenden Einstellungen zu halten, damit Benennung und Verhalten konsistent bleiben. Wenn es Anfragen gibt, weitere Richtlinien einzuführen, eröffne bitte ein Issue im Cursor-GitHub-Repository. Das Team entscheidet dann, ob es bereits eine entsprechende Einstellung für das gewünschte Verhalten gibt oder ob eine neue Einstellung erstellt werden sollte, um dieses Verhalten zu steuern.
## Häufig gestellte Fragen
### Unterstützt Cursor Konfigurationsprofile unter Linux?
Linux-Unterstützung steht derzeit nicht auf der Roadmap. Wenn du Konfigurationsprofile unter Linux möchtest, eröffne ein Issue im Cursor-GitHub-Repository und beschreibe deinen Anwendungsfall. # Mitglieder & Rollen Source: https://docs.cursor.com/de/account/teams/members Teammitglieder und Rollen verwalten Cursor-Teams haben drei Rollen:
## Rollen
**Mitglieder** sind die Standardrolle mit Zugriff auf die Pro-Funktionen von Cursor. * Voller Zugriff auf die Pro-Funktionen von Cursor * Kein Zugriff auf Abrechnungseinstellungen oder das Admin-Dashboard * Können die eigene Nutzung und das verbleibende nutzungsbasierte Budget sehen **Admins** steuern die Teamverwaltung und Sicherheitseinstellungen. * Voller Zugriff auf Pro-Funktionen * Mitglieder hinzufügen/entfernen, Rollen ändern, SSO einrichten * Nutzungsbasierte Preise und Ausgabelimits konfigurieren * Zugriff auf Team-Analytics **Unbezahlte Admins** verwalten Teams, ohne einen bezahlten Seat zu verwenden – ideal für IT- oder Finance-Mitarbeitende, die keinen Cursor-Zugriff brauchen. * Nicht abrechenbar, keine Pro-Funktionen * Gleiche administrativen Möglichkeiten wie Admins Unbezahlte Admins erfordern mindestens einen bezahlten User im Team.
## Rollenvergleich
| Funktionalität | Mitglied | Admin | Unbezahlter Admin | | ------------------------------------- | :------: | :---: | :---------------: | | Cursor‑Funktionen nutzen | ✓ | ✓ | | | Mitglieder einladen | ✓ | ✓ | ✓ | | Mitglieder entfernen | | ✓ | ✓ | | Benutzerrollen ändern | | ✓ | ✓ | | Admin‑Dashboard | | ✓ | ✓ | | SSO/Sicherheit konfigurieren | | ✓ | ✓ | | Abrechnung verwalten | | ✓ | ✓ | | Analysen einsehen | | ✓ | ✓ | | Zugriffe verwalten | | ✓ | ✓ | | Nutzungsgrenzen festlegen | | ✓ | ✓ | | Erfordert kostenpflichtigen Sitzplatz | ✓ | ✓ | |
## Mitglieder verwalten
Alle Teammitglieder können andere einladen. Einladungen werden aktuell nicht eingeschränkt.
### Mitglied hinzufügen
Füge Mitglieder auf drei Arten hinzu: 1. **E-Mail-Einladung** * Klicke auf `Invite Members` * Gib E-Mail-Adressen ein * Nutzer erhalten E-Mail-Einladungen 2. **Einladungslink** * Klicke auf `Invite Members` * Kopiere `Invite Link` * Teile ihn mit Teammitgliedern 3. **SSO** * Konfiguriere SSO im [Admin-Dashboard](/de/account/teams/sso) * Nutzer treten automatisch bei, wenn sie sich mit ihrer SSO-E-Mail anmelden Einladungslinks haben eine lange Gültigkeitsdauer – jeder mit dem Link kann beitreten. Widerrufe sie oder nutze [SSO](/de/account/teams/sso)
### Mitglied entfernen
Admins können Mitglieder jederzeit über das Kontextmenü → „Remove“ entfernen. Wenn ein Mitglied bereits Credits genutzt hat, bleibt sein Platz bis zum Ende des Abrechnungszeitraums belegt.
### Rolle ändern
Admins können Rollen für andere Mitglieder ändern, indem sie das Kontextmenü öffnen und anschließend die Option „Change role“ verwenden.
Es muss jederzeit mindestens ein Admin und ein zahlendes Mitglied im Team sein. ## Sicherheit & SSO SAML 2.0 Single Sign-On (SSO) ist in Team-Plänen verfügbar. Zu den wichtigsten Funktionen gehören: * SSO-Verbindungen konfigurieren ([mehr erfahren](/de/account/teams/sso)) * Domainverifizierung einrichten * Automatische Benutzerbereitstellung * Optionen zur Erzwingung von SSO * Integration von Identitätsanbietern (Okta usw.)

Für die Aktivierung von SSO ist eine Domainverifizierung erforderlich.

## Nutzungssteuerung
Greif auf die Nutzungseinstellungen zu, um: * nutzungsbasierte Abrechnung zu aktivieren * Premium-Modelle zu aktivieren * Änderungen nur für Admins zuzulassen * monatliche Ausgabenlimits festzulegen * die teamweite Nutzung zu überwachen
## Abrechnung
Wenn du Teammitglieder hinzufügst: * Jedes Mitglied oder jeder Admin belegt einen kostenpflichtigen Sitzplatz (siehe [Preise](https://cursor.com/pricing)) * Neue Mitglieder werden anteilig für die verbleibende Zeit im Abrechnungszeitraum berechnet * Unbezahlte Admin-Sitzplätze werden nicht mitgezählt Bei Ergänzungen mitten im Monat zahlst du nur für die genutzten Tage. Wenn du Mitglieder entfernst, die Credits genutzt haben, bleibt ihr Sitzplatz bis zum Ende des Abrechnungszyklus belegt – anteilige Rückerstattungen gibt es nicht. Rollenänderungen (z. B. Admin zu Unpaid Admin) wirken sich ab dem Änderungsdatum auf die Abrechnung aus. Wähle monatliche oder jährliche Abrechnung. Die monatliche/jährliche Verlängerung erfolgt an deinem ursprünglichen Anmeldedatum – unabhängig von Änderungen bei den Mitgliedern.
### Zur jährlichen Abrechnung wechseln
Spare **20 %**, indem du von monatlich auf jährlich wechselst: 1. Geh zum [Dashboard](https://cursor.com/dashboard) 2. Klick im Kontobereich auf „Advanced“ und dann auf „Upgrade to yearly billing“ Du kannst nur über das Dashboard von monatlich auf jährlich wechseln. Um von jährlich auf monatlich zu wechseln, schreib an [hi@cursor.com](mailto:hi@cursor.com). # SCIM Source: https://docs.cursor.com/de/account/teams/scim Richte SCIM-Provisioning für die automatisierte Verwaltung von Benutzer:innen und Gruppen ein
## Überblick
Die SCIM‑2.0‑Provisionierung verwaltet automatisch deine Teammitglieder und Verzeichnisgruppen über deinen Identity Provider. Verfügbar in Enterprise‑Plänen mit aktiviertem SSO. SCIM‑Einstellungen‑Dashboard mit Konfiguration für Active Directory Management
## Voraussetzungen
* Cursor Enterprise-Plan * SSO muss zuerst eingerichtet sein – **SCIM setzt eine aktive SSO-Verbindung voraus** * Admin-Zugriff auf deinen Identity-Provider (Okta, Azure AD, etc.) * Admin-Zugriff auf deine Cursor-Organisation ## So funktioniert's
### Benutzerbereitstellung
Nutzer werden automatisch zu Cursor hinzugefügt, wenn sie in deinem Identity-Provider der SCIM-Anwendung zugewiesen werden. Wenn die Zuweisung entfernt wird, werden sie gelöscht. Änderungen werden in Echtzeit synchronisiert.
### Verzeichnisgruppen
Verzeichnisgruppen und deren Mitgliedschaften werden aus deinem Identity-Provider synchronisiert. Gruppen- und Nutzerverwaltung müssen über deinen Identity-Provider erfolgen – Cursor zeigt diese Informationen nur schreibgeschützt an.
### Ausgabenverwaltung
Lege unterschiedliche Ausgabenlimits pro Nutzer für jede Verzeichnisgruppe fest. Limits auf Verzeichnisgruppenebene haben Vorrang vor Team-Limits. Nutzer in mehreren Gruppen erhalten das jeweils höchste anwendbare Ausgabenlimit.
## Setup
SCIM setzt voraus, dass SSO zuerst eingerichtet ist. Wenn du SSO noch nicht konfiguriert hast, folge der [SSO-Einrichtungsanleitung](/de/account/teams/sso), bevor du fortfährst. Navigiere zu [cursor.com/dashboard?tab=active-directory](https://www.cursor.com/dashboard?tab=active-directory) mit einem Admin-Account, oder geh in deine Dashboard-Einstellungen und wähle den Tab „Active Directory Management“. Sobald SSO verifiziert ist, siehst du einen Link für die schrittweise SCIM-Einrichtung. Klick darauf, um den Konfigurationsassistenten zu starten. In deinem Identity-Provider: - Erstelle oder konfiguriere deine SCIM-App - Verwende den von Cursor bereitgestellten SCIM-Endpoint und das Token - Aktiviere User- und Gruppen- Provisioning (Push) - Teste die Verbindung Zurück in der Active-Directory-Verwaltung von Cursor: - Sieh dir deine synchronisierten Verzeichnisgruppen an - Setze nutzerbezogene Ausgabenlimits für bestimmte Gruppen nach Bedarf - Prüfe, welche Limits für User in mehreren Gruppen gelten
### Identity-Provider-Setup
Für providerspezifische Setup-Anleitungen: Setup-Anleitungen für Okta, Azure AD, Google Workspace und mehr.
## Benutzer und Gruppen verwalten
Die gesamte Benutzer- und Gruppenverwaltung muss über deinen Identity-Provider erfolgen. Änderungen in deinem Identity-Provider werden automatisch mit Cursor synchronisiert, aber du kannst Benutzer oder Gruppen nicht direkt in Cursor ändern.
### Benutzerverwaltung
* Füge Benutzer hinzu, indem du sie in deinem Identity-Provider deiner SCIM-Anwendung zuweist * Entferne Benutzer, indem du die Zuweisung zur SCIM-Anwendung aufhebst * Änderungen am Benutzerprofil (Name, E-Mail) werden automatisch aus deinem Identity-Provider übernommen
### Gruppenverwaltung
* Verzeichnisgruppen werden automatisch aus deinem Identity-Provider synchronisiert * Änderungen an der Gruppenmitgliedschaft werden in Echtzeit übernommen * Nutze Gruppen, um Benutzer zu organisieren und unterschiedliche Ausgabenlimits festzulegen
### Ausgabenlimits
* Lege unterschiedliche Pro-Benutzer-Limits für jede Verzeichnisgruppe fest * Benutzer erben das höchste Ausgabenlimit aus ihren Gruppen * Gruppenlimits überschreiben das standardmäßige, teamweite Pro-Benutzer-Limit
## FAQ
### Warum wird die SCIM-Verwaltung in meinem Dashboard nicht angezeigt?
Stell sicher, dass SSO korrekt konfiguriert ist und funktioniert, bevor du SCIM einrichtest. SCIM erfordert eine aktive SSO-Verbindung.
### Warum werden Nutzer nicht synchronisiert?
Überprüf, ob Nutzer in deinem Identity Provider der SCIM-App zugewiesen sind. Nutzer müssen explizit zugewiesen werden, um in Cursor zu erscheinen.
### Warum werden Gruppen nicht angezeigt?
Prüf, ob die Bereitstellung für Gruppen-Push in den SCIM-Einstellungen deines Identity Providers aktiviert ist. Die Gruppensynchronisierung muss getrennt von der Nutzersynchronisierung konfiguriert werden.
### Warum werden Ausgabenlimits nicht angewendet?
Stell sicher, dass Nutzer in deinem Identity Provider den erwarteten Gruppen korrekt zugeordnet sind. Die Gruppenmitgliedschaft bestimmt, welche Ausgabenlimits gelten.
### Kann ich SCIM-Nutzer und -Gruppen direkt in Cursor verwalten?
Nein. Die gesamte Nutzer- und Gruppenverwaltung muss über deinen Identity Provider erfolgen. Cursor zeigt diese Informationen nur lesend an.
### Wie schnell werden Änderungen synchronisiert?
Änderungen in deinem Identity Provider werden in Echtzeit mit Cursor synchronisiert. Bei großen Bulk-Operationen kann es zu einer kurzen Verzögerung kommen. # Leg los Source: https://docs.cursor.com/de/account/teams/setup Erstelle und richte ein Cursor-Team ein
## Cursor für Teams
Cursor ist für Einzelpersonen und Teams. Der Teams-Plan bietet Tools für Organisationen: SSO, Teamverwaltung, Zugriffskontrollen und Nutzungsanalysen.
## Ein Team erstellen
Erstell ein Team, indem du diese Schritte befolgst: Um ein Team zu erstellen, folg diesen Schritten: 1. **Für neue Nutzer**: Besuch [cursor.com/team/new-team](https://cursor.com/team/new-team), um ein neues Konto und Team zu erstellen 2. **Für bestehende Nutzer**: Geh zu deinem [Dashboard](/de/account/dashboard) und klick auf „Upgrade to Teams“ Wähl einen Teamnamen und einen Abrechnungszeitraum aus Lad Teammitglieder ein. Die Nutzeranzahl wird anteilig berechnet – du zahlst nur für die Zeit, in der Nutzer Mitglieder sind. Aktivier [SSO](/de/account/teams/sso) für mehr Sicherheit und automatisiertes Onboarding.
## FAQ
Cursor verwendet standardmäßig HTTP/2. Manche Proxys und VPNs blockieren das. Aktiviere in den Einstellungen das HTTP/1.1-Fallback, um stattdessen HTTP/1.1 zu nutzen. Cursor rechnet pro aktivem Nutzer ab, nicht pro Sitzplatz. Du kannst jederzeit Nutzer hinzufügen oder entfernen – neue Mitglieder werden anteilig für die verbleibende Zeit berechnet. Wenn ein entfernter Nutzer Credits genutzt hat, bleibt sein Sitz bis zum Ende des Abrechnungszeitraums belegt. Dein Verlängerungsdatum bleibt gleich. Setz dich als [Unpaid Admin](/de/account/teams/members), um ohne Lizenz verwalten zu können. Teams benötigen mindestens ein zahlendes Mitglied. Du kannst alles einrichten, ein Mitglied einladen und dann deine Rolle vor der Abrechnung ändern. Download-Links für alle Plattformen findest du unter [cursor.com/downloads](https://cursor.com/downloads). MDM-Anleitungen: * [Omnissa Workspace ONE](https://docs.omnissa.com/bundle/MobileApplicationManagementVSaaS/page/DeployInternalApplications.html) (ehemals VMware) * [Microsoft Intune (Windows)](https://learn.microsoft.com/en-us/mem/intune-service/apps/apps-win32-app-management) * [Microsoft Intune (Mac)](https://learn.microsoft.com/en-us/mem/intune-service/apps/lob-apps-macos-dmg) * [Kandji MDM](https://support.kandji.io/kb/custom-apps-overview) # SSO Source: https://docs.cursor.com/de/account/teams/sso Richte Single Sign-on für dein Team ein
## Überblick
SAML 2.0 SSO ist ohne zusätzliche Kosten in Business-Plänen verfügbar. Verwende deinen bestehenden Identity-Provider (IdP), um Teammitglieder zu authentifizieren, ohne separate Cursor-Konten zu benötigen.
## Voraussetzungen
* Cursor Team-Plan * Admin-Zugriff auf deinen Identity-Provider (z. B. Okta) * Admin-Zugriff auf deine Cursor-Organisation
## Konfigurationsschritte
Navigiere mit einem Admin-Konto zu [cursor.com/dashboard?tab=settings](https://www.cursor.com/dashboard?tab=settings). Suche den Abschnitt „Single Sign-On (SSO)“ und klappe ihn aus. Klicke auf die Schaltfläche „SSO Provider Connection settings“, um die SSO-Einrichtung zu starten, und folge dem Assistenten. In deinem Identity Provider (z. B. Okta): * Neue SAML-Anwendung erstellen * SAML-Einstellungen mit den Informationen von Cursor konfigurieren * Just-in-Time-(JIT)-Bereitstellung einrichten Verifiziere die Domain deiner Nutzer in Cursor, indem du auf die Schaltfläche „Domain verification settings“ klickst.
### Anleitungen zur Einrichtung von Identity Providern
Für anbieterbezogene Einrichtungsanleitungen: Einrichtungsanleitungen für Okta, Azure AD, Google Workspace und mehr.
## Zusätzliche Einstellungen
* SSO-Erzwingung im Admin-Dashboard verwalten * Neue Nutzer werden bei der Anmeldung über SSO automatisch aufgenommen * Nutzerverwaltung über deinen Identity Provider steuern
## Fehlerbehebung
Wenn Probleme auftreten: * Prüf, ob die Domain in Cursor verifiziert ist * Stell sicher, dass SAML-Attribute korrekt zugeordnet sind * Prüf, ob SSO im Admin-Dashboard aktiviert ist * Gleiche Vor- und Nachnamen zwischen Identity Provider und Cursor ab * Schau dir die anbieter­spezifischen Anleitungen oben an * Schreib an [hi@cursor.com](mailto:hi@cursor.com), wenn die Probleme weiter bestehen # Update-Zugriff Source: https://docs.cursor.com/de/account/update-access Wähle, wie oft du Updates bekommst export const Kbd = ({children, tooltip, os}) => { const keysInput = typeof children === 'string' && children.trim() !== '' ? children : null; if (!keysInput) { return null; } const isModifier = key => { const modifiers = ['⌘', '⇧', '⌥', '⌃', '⏎', '⌫', '⌦', '⎋', '⇥', '⌁', '←', '→', '↑', '↓', 'Ctrl', 'Shift', 'Alt', 'Cmd', 'Opt', 'Return', 'Backspace', 'Delete', 'Escape', 'Tab', 'Space', 'Enter', 'Esc', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Left', 'Right', 'Up', 'Down']; return modifiers.includes(key.trim()); }; const capitalizeFirstLetter = string => { return string.charAt(0).toUpperCase() + string.slice(1); }; const isMac = os ? os.toLowerCase() === 'mac' || os.toLowerCase() === 'macos' : typeof navigator !== 'undefined' && (navigator.platform.toUpperCase().indexOf('MAC') >= 0 || navigator.userAgent.toUpperCase().indexOf('MAC') >= 0); const convertToSymbols = shortcut => { if (isMac) { return shortcut.replace(/⌘|Cmd|CMD/gi, '⌘').replace(/⌥|Opt|OPT/gi, '⌥').replace(/⌃|Ctrl/gi, '⌃').replace(/⇧|Shift/gi, '⇧').replace(/⏎|Return/gi, '⏎').replace(/⌫|Backspace/gi, '⌫').replace(/⌦|Delete/gi, '⌦').replace(/␛|Escape/gi, '␛').replace(/⇥|Tab/gi, '⇥').replace(/⌁|Space/gi, '⌁').replace(/←|Arrow\s*Left|ArrowLeft|Left/gi, '←').replace(/→|Arrow\s*Right|ArrowRight|Right/gi, '→').replace(/↑|Arrow\s*Up|ArrowUp|Up/gi, '↑').replace(/↓|Arrow\s*Down|ArrowDown|Down/gi, '↓'); } else { const converted = shortcut.replace(/⌘|Cmd|CMD/gi, 'Ctrl').replace(/⌥|Opt|OPT/gi, 'Alt').replace(/⌃|Ctrl/gi, 'Ctrl').replace(/⇧|Shift/gi, 'Shift').replace(/⏎|Return/gi, 'Enter').replace(/⌫|Backspace/gi, 'Backspace').replace(/⌦|Delete/gi, 'Delete').replace(/⎋|Escape/gi, 'Esc').replace(/⇥|Tab/gi, 'Tab').replace(/⌁|Space/gi, 'Space').replace(/←|Arrow\s*Left|ArrowLeft|Left/gi, 'Arrow-Left').replace(/→|Arrow\s*Right|ArrowRight|Right/gi, 'Arrow-Right').replace(/↑|Arrow\s*Up|ArrowUp|Up/gi, 'Arrow-Up').replace(/↓|Arrow\s*Down|ArrowDown|Down/gi, 'Arrow-Down'); const keyList = converted.split(/[\+\s]+/).filter(key => key.trim()); return keyList.join('+'); } }; const convertToReadableText = shortcut => { const converted = shortcut.replace(/⌘|Cmd|CMD/gi, 'Cmd').replace(/⌥|Opt|OPT/gi, 'Opt').replace(/⌃|Ctrl/gi, 'Ctrl').replace(/⇧|Shift/gi, 'Shift').replace(/⏎|Return/gi, 'Return').replace(/⌫|Backspace/gi, 'Backspace').replace(/⌦|Delete/gi, 'Delete').replace(/⎋|Escape/gi, 'Escape').replace(/⇥|Tab/gi, 'Tab').replace(/⌁|Space/gi, 'Space').replace(/←|Arrow\s*Left|ArrowLeft|Left/gi, 'Arrow-Left').replace(/→|Arrow\s*Right|ArrowRight|Right/gi, 'Arrow-Right').replace(/↑|Arrow\s*Up|ArrowUp|Up/gi, 'Arrow-Up').replace(/↓|Arrow\s*Down|ArrowDown|Down/gi, 'Arrow-Down'); const keyList = converted.split(/[\+\s]+/).filter(key => key.trim()); return keyList.map(key => { const trimmedKey = key.trim(); return isModifier(trimmedKey) ? trimmedKey : capitalizeFirstLetter(trimmedKey); }).join('+'); }; const displayShortcut = convertToSymbols(keysInput); const tooltipText = isMac ? tooltip ? `${convertToReadableText(keysInput)}: ${tooltip}` : convertToReadableText(keysInput) : tooltip || null; const processedKeys = isMac ? displayShortcut.split(/[\+\s]+/).filter(key => key.trim()).map(key => { const trimmedKey = key.trim(); return isModifier(trimmedKey) ? trimmedKey : capitalizeFirstLetter(trimmedKey); }).join('') : displayShortcut.split('+').map(key => { const trimmedKey = key.trim(); return isModifier(trimmedKey) ? trimmedKey : capitalizeFirstLetter(trimmedKey); }).join('+'); return tooltipText ? {processedKeys} : {processedKeys} ; }; Cursor hat zwei Update-Kanäle. Der Standard-Update-Kanal mit getesteten Releases. * Stabile Releases * Bugfixes aus dem Pre-Release-Testing * Standard für alle Nutzer * Einzige Option für Team-Nutzer Team- und Business-Accounts verwenden den Default-Modus. Vorabversionen mit neuen Features. Early-Access-Builds können Bugs oder Stabilitätsprobleme haben. * Zugriff auf Features in Entwicklung * Kann Bugs enthalten * Nicht verfügbar für Team-Accounts
## Update-Kanal ändern
1. **Einstellungen öffnen**: Drück Cmd+Shift+J 2. **Zu Beta gehen**: Wähl Beta in der Seitenleiste 3. **Kanal auswählen**: Wähl Default oder Early Access Meld Early-Access-Probleme im [Forum](https://forum.cursor.com). # Apply Source: https://docs.cursor.com/de/agent/apply Lerne, wie du Codevorschläge aus dem Chat mit Apply übernehmen, akzeptieren oder ablehnen kannst
## Wie Apply funktioniert
Apply ist ein spezialisiertes Cursor-Modell, das von Chat generierten Code übernimmt und in deine Dateien integriert. Es verarbeitet die Codeblöcke aus Chat-Unterhaltungen und wendet die Änderungen auf deine Codebase an. Apply generiert selbst keinen Code. Das Chat-Modell erzeugt den Code, und Apply übernimmt die Integration in bestehende Dateien. Es kann Änderungen über mehrere Dateien und große Codebases hinweg verarbeiten.
## Codeblöcke anwenden
Um einen Codeblock-Vorschlag anzuwenden, klick auf den Play-Button oben rechts im Codeblock. # Checkpoints Source: https://docs.cursor.com/de/agent/chat/checkpoints Frühere Zustände nach Agent-Änderungen speichern und wiederherstellen Checkpoints sind automatische Snapshots der Änderungen des Agents an deinem Codebase. Damit kannst du Agent-Änderungen bei Bedarf rückgängig machen.