> For the complete documentation index, see [llms.txt](https://docs.xandtech.fr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.xandtech.fr/home/xstash/reference/permissions.md).

# Permissions

## Core permissions

| Node               | Default | Controls                                                                                                                            |
| ------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `xstash.use`       | `true`  | Use virtual chests (`/xstash`).                                                                                                     |
| `xstash.admin`     | `op`    | Administration: `/xstash reload\|backpack\|logs\|view\|export` and `/sacks give\|settier\|view\|addslots\|removeslots\|clearslots`. |
| `xstash.sacks.use` | `true`  | Base permission for everything sacks-related (Sack of Sacks, auto-collect, opening/crafting an individual sack).                    |

## Chest count & rows

| Node                      | Default | Controls                                                                                   |
| ------------------------- | ------- | ------------------------------------------------------------------------------------------ |
| `xstash.number_chest.<n>` | dynamic | Free chests granted (e.g. `xstash.number_chest.10`). **Highest value wins**, not additive. |
| `xstash.number_row.<n>`   | dynamic | Rows per chest (e.g. `xstash.number_row.6`). Same "highest wins" rule.                     |

{% hint style="warning" %}
`chests/config.yml` `purchase.force-for-priced-chests` isn't a permission, but interacts directly with `xstash.number_chest.<n>`: when true, a chest listed in `chest-prices.yml` always requires an actual purchase, no matter how high that permission goes.
{% endhint %}

## Chest customization

| Node / config field                    | Default | Controls                                                     |
| -------------------------------------- | ------- | ------------------------------------------------------------ |
| `xstash.customize`                     | `false` | Base permission for renaming/re-iconing/resetting a chest.   |
| `customization.rename.permission`      | empty   | Extra permission on top of `xstash.customize`, for renaming. |
| `customization.icon-change.permission` | empty   | Extra permission, for changing the icon.                     |
| `customization.reset.permission`       | empty   | Extra permission, for resetting.                             |

## Chest utility bar

| Node / config field                     | Default | Controls                                                 |
| --------------------------------------- | ------- | -------------------------------------------------------- |
| `xstash.utility_bar`                    | `false` | Base permission, required for any button to show at all. |
| `utility-bar.sort.permission`           | empty   | Extra permission for "sort".                             |
| `utility-bar.auto-smelt.permission`     | empty   | Extra permission for "auto-smelt".                       |
| `utility-bar.compact.permission`        | empty   | Extra permission for "compact".                          |
| `utility-bar.sell-all.permission`       | empty   | Extra permission for "sell-all".                         |
| `utility-bar.previous-chest.permission` | empty   | Extra permission for the previous-chest button.          |
| `utility-bar.next-chest.permission`     | empty   | Extra permission for the next-chest button.              |
| `utility-bar.back.permission`           | empty   | Extra permission for the back button.                    |

## Icons

| Node               | Default | Controls                                                                                                                                    |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `xstash.icon.<id>` | dynamic | Gates one specific icon in `chests/icons.yml` (e.g. `xstash.icon.diamond_block`). An icon with no node configured is available to everyone. |

## Blocked items

| Node                               | Default | Controls                                                                               |
| ---------------------------------- | ------- | -------------------------------------------------------------------------------------- |
| `xstash.bypass_blocked_items`      | `op`    | Bypasses **every** restriction in `chests/blocked-items.yml` at once.                  |
| `xstash.bypass_blocked_items.<id>` | dynamic | Bypasses one specific blocked item (e.g. `xstash.bypass_blocked_items.command_block`). |

## Ender chest redirect & travel backpack

| Config field                            | Default | Controls                                                                |
| --------------------------------------- | ------- | ----------------------------------------------------------------------- |
| `chests.enderchest-redirect.permission` | empty   | Extra permission (on top of `xstash.use`) for the ender chest redirect. |
| `travel-backpack.craft.permission`      | empty   | Extra permission for crafting the travel backpack.                      |

## Sacks

| Node / config field                                                         | Default  | Controls                                                                                                                                               |
| --------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `xstash.sacks.quicksell`                                                    | `false`  | Extra permission (on top of `xstash.sacks.use`) for the quick-sell button.                                                                             |
| `xstash.sacks.quicksell.bypasscooldown`                                     | `op`     | Bypasses the quick-sell cooldown.                                                                                                                      |
| `open-permission` + `require-open-permission` (per sack, `sacks/sacks.yml`) | disabled | Permission to open one specific sack — **only applies if `require-open-permission: true`**, otherwise the field is silently ignored even if filled in. |
| `tiers[].upgrade.permission` + `upgrade.require-permission` (per tier)      | disabled | Permission to unlock one specific tier — same "must set `require-permission: true`" rule.                                                              |

## Selling

| Node                          | Default | Controls                                                                                                                                                                |
| ----------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `xstash.sell.boost.<percent>` | dynamic | Sell price bonus, both chests and sacks (e.g. `xstash.sell.boost.10` for +10%). Highest value wins, not additive. Capped by `sell-prices.yml` `sell-boost.max-percent`. |

## Common gotchas

* **`number_chest`/`number_row`/`sell.boost` are a maximum, not a sum.** VIP = `xstash.number_chest.10`, VIP+ = `xstash.number_chest.20` → a player with both ranks gets 20, not 30.
* **A sack's `open-permission`/`upgrade.permission` field does nothing on its own.** It only applies once the matching `require-*-permission` is explicitly set to `true` — a very easy step to forget.
* **An empty `permission: ""` in any YAML means "no extra restriction beyond the base permission"**, not "nobody has access". The base permission (`xstash.use`, `xstash.customize`, `xstash.utility_bar`, `xstash.sacks.use`...) is already enough on its own.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.xandtech.fr/home/xstash/reference/permissions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
