Version: 1.0.0
Category: Troubleshooting
Status: Stable
Last Updated: January 1, 2026
This guide helps troubleshoot issues with Hash permissions and permission bit manipulation. Permission values are bit-based flags that can be combined using bitwise OR.
Symptom: Permission check fails even though permission should be granted
Cause: Hash permission bit (64) not included in permission value
Diagnosis:
GET /structs/permission/{permissionId}permission.value (numeric string)(value & 64) == 64Solution:
newValue = oldValue | 64(newValue & 64) == 64Example:
{
"permissionId": "0-1@1-11",
"oldValue": "63",
"newValue": "127",
"calculation": "63 | 64 = 127",
"hashPermission": "(127 & 64) == 64 ✓"
}
Reference: schemas/game-state.md#/definitions/Permission, api/queries/permission.md
Symptom: Permission value doesn’t match expected combination
Cause: Incorrect bitwise OR operation
Diagnosis:
GET /structs/permission/{permissionId}permission.valueSolution:
value = permission1 | permission2(value & permission) == permission127 (bits 0-6)64 (bit 6)63 (bits 0-5)63 | 64 = 127Reference: schemas/game-state.md#/definitions/Permission, schemas/entities.md#/definitions/Permission
Symptom: Permission query returns permission for different object
Cause: Incorrect permission ID format or object ID
Diagnosis:
{objectId}@{playerId}type-index (e.g., 0-1 for guild, 2-1 for planet)1-{index}permission.objectId matches expected objectSolution:
{objectId}@{playerId}GET /structs/permission/object/{objectId}GET /structs/permission/player/{playerId}Reference: api/queries/permission.md, schemas/formats.md
Symptom: Database query for permission_hash returns no results
Cause: Permission hash level not set or query incorrect
Diagnosis:
structs.permission tablepermission_hash level exists (added 2025-12-18)view.permissionSolution:
SELECT * FROM view.permission WHERE permission_hash = trueReference: schemas/database-schema.md, api/queries/permission.md
Symptom: Transaction signing fails with permission error
Cause: Hash permission not granted for transaction signing
Diagnosis:
structs.signer_txSolution:
Reference: schemas/database-schema.md#/tables/signer_tx, schemas/entities.md#/definitions/Permission
Symptom: Combining permissions produces wrong value
Cause: Incorrect bitwise operation or value overflow
Diagnosis:
value1 | value2Solution:
value = value1 | value2(value & bit) == bitvalue = value & ~bitExample:
{
"permission1": 63,
"permission2": 64,
"combined": "63 | 64 = 127",
"checkHash": "(127 & 64) == 64 ✓",
"removeHash": "127 & ~64 = 63"
}
Reference: schemas/game-state.md#/definitions/Permission
GET /structs/permission/{permissionId}value = parseInt(permission.value)(value & 64) == 64newValue = currentValue | 64(newValue & 64) == 64newValue = currentValue & ~64(newValue & 64) == 0INVALID_MESSAGE - Invalid permission formatGENERAL_ERROR - General error (retryable)See: schemas/errors.md for complete error definitions
Always use bitwise OR to combine permissions, bitwise AND to check permissions.
After setting permissions, always verify the value matches expected combination.
Verify permission applies to correct object and player.
When querying database, account for permission_hash level.
Test permission combinations before applying to production.
../schemas/game-state.md#/definitions/Permission - Permission entity schema../api/queries/permission.md - Permission query endpoints../schemas/database-schema.md - Permission database changes../reference/entity-index.md - Permission entity information../schemas/formats.md - ID format specificationsLast Updated: January 1, 2026