---
title: "Utwórz token agenta"
description: "Utwórz token agenta obop o ograniczonym zakresie przez REST (POST /api/auth/agent-token) lub za pomocą CLI (obop agent-token). Token jest pokazywany raz i może jedynie zawęzić grupy uprawnień swojego właściciela."
canonical: "https://obop-platform.sliplane.app/pl/docs/agents/tokens/"
lang: "pl"
---

# Utwórz token agenta

## Czym jest token

- Należy do osoby, która go utworzyła (jego _właściciela_), i działa z podzbiorem grup tej osoby.
- Jest pokazywany **raz**. obop przechowuje tylko jego skrót, więc zgubionego tokenu nie można odzyskać; utwórz nowy.
- Zaczyna się od `obop_`. Traktuj go jak hasło.
- Tokeny mogą tworzyć tylko ludzie. Agent nie może wygenerować kolejnego tokenu.
- Nie wygasa i przestaje działać dopiero po usunięciu jego właściciela. Nie ma jeszcze polecenia do unieważnienia pojedynczego tokenu (zobacz [Bezpieczeństwo](/pl/docs/agents/safety/)).

## Wybierz zakresy

Zakresy to [grupy uprawnień](/pl/docs/concepts/permission-groups/). Zastanów się, co agent ma robić, i nadaj mu tylko te grupy. Typowe grupy wbudowanych aplikacji:

| Grupa               | Pozwala agentowi                                                     |
| ------------------- | -------------------------------------------------------------------- |
| `base.user`         | odczytywać i zapisywać kontakty (dane osobowe pozostają zamaskowane) |
| `crm.user`          | odczytywać i zapisywać leady oraz przesuwać je w lejku sprzedaży     |
| `sales.user`        | odczytywać i zapisywać oferty i zamówienia                           |
| `invoicing.user`    | odczytywać i zapisywać faktury oraz anulować wersje robocze          |
| `invoicing.manager` | zaproponować zaksięgowanie faktury (zatwierdza nadal człowiek)       |
| `product.user`      | odczytywać produkty i ceny                                           |

Zainstalowane pakiety dodają własne grupy, na przykład `helpdesk.agent`. [Strony aplikacji](/pl/apps/) wymieniają grupy każdej z nich.

## Przez REST

Zaloguj się jako osoba, a następnie poproś o token. Potrzebna jest działająca instancja; przykłady używają lokalnej na porcie 8080.

```bash
curl -s -X POST http://127.0.0.1:8080/api/auth/login \
  -H 'content-type: application/json' \
  -d '{"username":"alice","password":"your password"}'
```

Odpowiedź to `{"token":"obop_..."}`: token sesji, który działa 12 godzin. Użyj go jako tokenu okaziciela, aby utworzyć token agenta:

```bash
curl -s -X POST http://127.0.0.1:8080/api/auth/agent-token \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"scopes":["base.user","crm.user"],"label":"triage-bot"}'
```

```json
{ "token": "obop_1e00c3..." }
```

Pole `scopes` jest wymagane i musi wskazywać co najmniej jedną grupę, którą posiadasz. Pole `label` to dowolny tekst. W instancji hostowanej użyj jej adresu zamiast `127.0.0.1:8080`, a jako nazwy użytkownika podaj adres e-mail użyty przy rejestracji.

## Za pomocą CLI

Jeśli hostujesz system samodzielnie, możesz wydać token bezpośrednio z wiersza poleceń. Polecenie łączy się bezpośrednio z bazą danych, więc uruchom je tam, gdzie baza jest osiągalna:

```bash
obop agent-token alice --scopes base.user,crm.user --label triage-bot
```

```text
obop_1e00c32430532fdcef...
shown once; store it like a password
```

Dodaj `--db postgres://...` (lub ustaw `OBOP_DATABASE_URL`), jeśli instancja nie używa domyślnej bazy `sqlite://obop.db`.

## Przechowuj go bezpiecznie

- Umieść go w zmiennej środowiskowej lub w magazynie sekretów, a nie w repozytorium.
- Najlepiej utwórz jeden token na agenta i na zadanie, aby je rozróżniać i móc usunąć jeden bez wpływu na pozostałe.
- Tokeny w pliku konfiguracyjnym klienta może odczytać wszystko, co ma dostęp do tego pliku.

## Błędy

| Odpowiedź                                                                      | Znaczenie                                    |
| ------------------------------------------------------------------------------ | -------------------------------------------- |
| `400 {"error":"an agent token needs at least one scope"}`                      | Pole `scopes` było puste.                    |
| `400 {"error":"you do not hold invoicing.manager, so you cannot delegate it"}` | Poproszono o grupę, której nie posiadasz.    |
| `400 {"error":"only a human user can issue agent tokens"}`                     | Użyto tokenu agenta, aby poprosić o kolejny. |
| `401`                                                                          | Brakujący, błędny lub wygasły token sesji.   |

Dalej: [połącz się przez MCP](/pl/docs/agents/mcp/) lub [użyj REST API](/pl/docs/agents/rest/).
