# `type.auth_principal_input`

Input field holds a caller.

Area 8, [Identity](../topics/identity.md); not declinable; the next step is usually the agent's.

```jadpo
principal {
    user: {
        subject: Member.handle
    }
}

type Handle = Text {
    max_length: 40
}

entity Member {
    id: Uuid
    handle: Handle {
        unique: true
    }
}

type ActAs = Input {
    caller: Principal.user
}
```

```text
error: `ActAs.caller` holds a caller
 --> main.jadpo:19:13
   |
19 |     caller: Principal.user
   |             ^^^^^^^^^^^^^^ a caller
  reason: A caller comes only from signing in, never from what a request sends, so a route takes it as `current_principal` and passes it on.
  next: Remove `caller`, and pass `current_principal` to what the route runs (agent)
  rule: type.auth_principal_input
  help: https://jadpo.dev/docs/errors/type.auth_principal_input

check failed: 1 error, 1 file
```
