Can't refresh token via client call – permission denied

This looks related to your earlier question: Server role has insufficient privileges

You can provide permission to Tokens and Keys in a custom Role.

CreateRole({
  name: "RoleToUpdateTokens",
  privileges: [
    {
      resource: Tokens(),
      actions: {
        read: true,
        write: true,
        create: true,
        delete: true,
        history_read: true,
        history_write: true
      }
    }
  ],
  membership: []
})