---
title: "Give new accounts low limits until they · Agent Wranglers"
url: https://agentwranglers.se/playbook/trust-and-safety/sign-up-fraud-and-abuse/new-account-limits
id: TNS-12
level: Recommended
applies: accounts
updated: 2026-10-22
tokens: 1127
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Give new accounts low limits until they earn trust

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Sign-up fraud and abuse](https://agentwranglers.se/playbook/trust-and-safety/sign-up-fraud-and-abuse.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-22.

- ID: TNS-12
- Level: Recommended
- Chapter: [Sign-up fraud and abuse](https://agentwranglers.se/playbook/trust-and-safety/sign-up-fraud-and-abuse.md)
- Rule: Limit what an account can do in its first days. Cap posts with links, messages to strangers, invitations and uploads per day, and lift each cap after a fixed age and clean history.
- Check: A test signs up a new account and sends messages to 6 strangers in one day. The sixth is refused with the date the cap lifts. The same test on an account aged 14 days with no strikes sends all 6.
- Applies when: The project has user accounts.
- How: Spammers and scammers act within minutes of sign-up, and people almost never need those powers on day one. Keep trust levels as data, such as new, basic and trusted, each with its daily caps. Promote an account after a set number of days and actions with no upheld report. Demote it on a strike from [Warn before you suspend and count every strike](https://agentwranglers.se/playbook/trust-and-safety/decisions-and-appeals/strikes-and-suspensions.md). Show the person a plain message when they hit a cap, with the date it lifts. Costly free features, such as AI calls or exports, have their own caps per account, as [Protect free tiers from automated abuse](https://agentwranglers.se/playbook/adversarial-testing/abuse-and-limits/free-tier-abuse.md) says.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### JavaScript example

```js
const TRUST_LEVELS = {
  new: { minDays: 0, strangerMessagesPerDay: 5, linkPostsPerDay: 0, invitesPerDay: 3 },
  basic: { minDays: 3, strangerMessagesPerDay: 30, linkPostsPerDay: 5, invitesPerDay: 20 },
  trusted: { minDays: 14, strangerMessagesPerDay: 200, linkPostsPerDay: 50, invitesPerDay: 100 },
};

export function trustLevel(account, now = Date.now()) {
  const ageDays = (now - Date.parse(account.createdAt)) / 86_400_000;
  if (account.liveStrikes > 0) return 'new';
  return ['trusted', 'basic', 'new'].find(level => ageDays >= TRUST_LEVELS[level].minDays);
}
```

### Python example

```python
TRUST_LEVELS = {
    "new": {"min_days": 0, "stranger_messages_per_day": 5, "link_posts_per_day": 0, "invites_per_day": 3},
    "basic": {"min_days": 3, "stranger_messages_per_day": 30, "link_posts_per_day": 5, "invites_per_day": 20},
    "trusted": {"min_days": 14, "stranger_messages_per_day": 200, "link_posts_per_day": 50, "invites_per_day": 100},
}

def trust_level(account, now) -> str:
    age_days = (now - account.created_at).days
    if account.live_strikes > 0:
        return "new"
    return next(level for level in ("trusted", "basic", "new") if age_days >= TRUST_LEVELS[level]["min_days"])
```

## Related rules

- TNS-8 [Warn before you suspend and count every strike](https://agentwranglers.se/playbook/trust-and-safety/decisions-and-appeals/strikes-and-suspensions.md) in Trust and safety
- SEC-63 [Protect free tiers from automated abuse](https://agentwranglers.se/playbook/adversarial-testing/abuse-and-limits/free-tier-abuse.md) in Adversarial testing
- MED-28 [Limit how many uploads each account starts](https://agentwranglers.se/playbook/files-and-media/quotas-and-cost/upload-rate-limits.md) in Files and media

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/trust-and-safety/sign-up-fraud-and-abuse/new-account-limits">Agent Wranglers trust and safety playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Score every sign-up for risk](https://agentwranglers.se/playbook/trust-and-safety/sign-up-fraud-and-abuse/sign-up-risk-score.md)
- Next: [Spot banned people who sign up again](https://agentwranglers.se/playbook/trust-and-safety/sign-up-fraud-and-abuse/ban-evasion.md)
- [Sign-up fraud and abuse](https://agentwranglers.se/playbook/trust-and-safety/sign-up-fraud-and-abuse.md)
