- Starting a stream before calling `protect()` — if the request is denied mid-stream
the client gets a broken response. Always call `protect()` first and return an error before opening the stream.
Explore
126,213 skills indexed with the new KISS metadata standard.
the client gets a broken response. Always call `protect()` first and return an error before opening the stream.
not in Next.js pages or server actions.
return a plain error response instead of calling the AI SDK.
independent of the model provider.
return the error before opening the stream — don't start streaming and then abort.
filter by conclusion to see blocks
suggest the `/arcjet:security-analyst` agent which can investigate traffic
promote to `LIVE`.
`res.status(429).json(...)` for Express).
decision.reason.message);
// PII scanning
// injection detection
{ status: 403 });
consider adding Arcjet advanced signals for client-side bot detection that catches sophisticated headless browsers. See https://docs.arcjet.com/bot-protection/advanced-signals for setup.
{
// tokens to deduct for rate limiting
defaults to IP-based.
deduct 1 token per message
directly linking rate limiting to cost. It also allows short bursts while enforcing an average rate
SensitiveInfoType.CREDIT_CARD_NUMBER
role-play escapes
PII leakage
set one up first with `shield()` as the base rule. The user will need to register for an Arcjet account at https://app.arcjet.com then use the `ARCJET_KEY` in their environment variables.
rule types