# Overview

Stream Chat ships with a configurable permission system that allows high resolution control over what users are permitted to do. There are two versions available, so before diving into the documentation, it is important to understand which version of permissions you are using :

<codetabs>

<codetabs-item value="javascript" label="JavaScript">

```js
// To check your permissions version (server side only)
const { app } = await client.getAppSettings();
console.log(app.permission_version);
```

</codetabs-item>

<codetabs-item value="php" label="PHP">

```php
// To check your permissions version (server side only)
$response = $client->getAppSettings();
var_dump($response['app']['permission_version']); // "v1" or "v2"
```

</codetabs-item>

<codetabs-item value="python" label="Python">

```python
# To check your permissions version (server side only)
response = client.get_app_settings()
print(response["app"]["permission_version"]) # "v1" or "v2"
```

</codetabs-item>

<codetabs-item value="java" label="Java">

```java
// To check your permissions version (server side only)
var app = App.get().request();
System.out.println(app.getApp().getPermissionVersion()); // "v1" or "v2"
```

</codetabs-item>

<codetabs-item value="ruby" label="Ruby">

```ruby
# require 'stream-chat'

# To check your permissions version (server side only)
response = client.get_app_settings
puts response['app']['permission_version'] # "v1" or "v2"
```

</codetabs-item>

<codetabs-item value="go" label="Go">

```go
// To check your permissions version (server side only)
conf, _ := c.GetAppConfig(ctx)
fmt.Print(conf.App.PermissionVersion)
```

</codetabs-item>

<codetabs-item value="csharp" label="C#">

```csharp
// To check your permissions version (server side only)
var result = await appClient.GetAppSettingsAsync();
Console.WriteLine(result.App.PermissionVersion); // enum of PermissionVersion.V1 or PermissionVersion.V2
```

</codetabs-item>

<codetabs-item value="unity" label="Unity">

```csharp
// This is a server-side only feature, choose any of our server-side SDKs to use it
```

</codetabs-item>

</codetabs>

Based on your version and use case, pick a page to learn more:

1. [Permissions v1](/chat/docs/<framework>/legacy_permissions/)

2. [Permissions v2](/chat/docs/<framework>/user_permissions/)

3. [Migrating from Legacy](/chat/docs/<framework>/migrating_from_legacy/)

4. [Multi-Tenancy](/chat/docs/<framework>/multi_tenant_chat/) - grouping users into teams (or tenants) to keep their data strictly segregated.

---

This page was last updated at 2025-08-15T14:14:18.346Z.

For the most recent version of this documentation, visit [https://getstream.io/chat/docs/dotnet-csharp/chat_permission_policies/](https://getstream.io/chat/docs/dotnet-csharp/chat_permission_policies/).