Rolify

Role management library for Ruby on Rails — adds flexible role-based access control with resource-scoped roles. Rolify features: `rolify` macro on User model adds has_and_belongs_to_many :roles, `resourcify` on resource model enables resource-scoped roles, `user.add_role :admin` (global role), `user.add_role :editor, Agent` (class-scoped), `user.add_role :owner, @agent` (instance-scoped). Querying: `user.has_role? :admin`, `User.with_role :editor, Agent`. Integrates with CanCanCan and Pundit for authorization policy evaluation. Roles stored in roles table with optional resource_type/resource_id for scoping.

Evaluated Mar 06, 2026 (0d ago) v6.x
Homepage ↗ Repo ↗ Developer Tools ruby rails roles rbac permissions authorization resource-scoped activerecord
⚙ Agent Friendliness
62
/ 100
Can an agent use this?
🔒 Security
85
/ 100
Is it safe for agents?
⚡ Reliability
79
/ 100
Does it work consistently?

Score Breakdown

⚙ Agent Friendliness

MCP Quality
--
Documentation
82
Error Messages
78
Auth Simplicity
85
Rate Limits
92

🔒 Security

TLS Enforcement
88
Auth Strength
82
Scope Granularity
85
Dep. Hygiene
82
Secret Handling
88

Role assignment is a privileged operation — protect add_role endpoints with authorization checks; never expose role assignment to unauthenticated or unauthorized agent users. Rolify role names are strings stored in DB — validate against whitelist to prevent arbitrary role creation. Resource-scoped roles require careful access control on role assignment.

⚡ Reliability

Uptime/SLA
82
Version Stability
78
Breaking Changes
75
Error Recovery
80
AF Security Reliability

Best When

Your Rails agent platform has multiple user roles that need to be scoped to specific resources — Rolify provides flexible global, class-level, and instance-level role management with database persistence.

Avoid When

You only have 2-3 hard-coded roles (use an enum on the User model), you need attribute-level permissions, or you're not on Rails.

Use Cases

  • Agent platform role assignment — user.add_role :admin (platform admin), user.add_role :creator, Agent (can create any agent), user.add_role :owner, @agent (owns specific agent); Rolify enables three-tier role model in one gem
  • CanCanCan integration for agent RBAC — Rolify roles drive CanCanCan Ability class: can :manage, Agent if user.has_role? :admin; can :manage, Agent, user_id: user.id if user.has_role? :creator, Agent; clean separation of role storage from authorization logic
  • Agent team membership with roles — user.add_role :reviewer, @project assigns user as reviewer on specific project; User.with_role(:reviewer, @project).each for listing team members; resource-scoped roles model agent team collaboration
  • Dynamic agent permission UI — user.roles.map(&:name) lists all user roles for permission display; user.has_role?(:owner, @agent) gates destructive agent operations; Rolify queries enable permission-based UI rendering
  • Bulk role queries for agent admin — User.with_role(:admin) returns all admin users; Agent.with_role(:owner, user) returns all agents a user owns; efficient role-based queries for agent platform administration

Not For

  • Attribute-level permissions — Rolify manages roles, not field-level access; for agent API responses that vary by role (hide certain fields), combine Rolify with Pundit or custom serializer logic
  • Non-Rails projects — Rolify is ActiveRecord/Rails-specific; for non-Rails Ruby agent services, implement custom role management or use a policy library
  • Complex permission rules without authorization layer — Rolify stores roles but doesn't evaluate permissions; always combine with CanCanCan or Pundit; using Rolify alone without an authorization layer just gives you role storage

Interface

REST API
No
GraphQL
No
gRPC
No
MCP Server
No
SDK
Yes
Webhooks
No

Authentication

Methods: none
OAuth: No Scopes: No

Role management library — works with any authentication system. Roles are assigned by application logic; protect role assignment endpoints from unauthorized access.

Pricing

Model: open_source
Free tier: Yes
Requires CC: No

Rolify is MIT licensed. Free for all use.

Agent Metadata

Pagination
none
Idempotent
Full
Retry Guidance
Not documented

Known Gotchas

  • N+1 role queries without eager loading — user.has_role? in views/serializers for each agent in list triggers per-agent SQL query; use User.with_role eager loading or preload roles with user.roles.load before rendering agent list; Rolify does not auto-eager-load roles
  • resourcify must be added to resource model — user.add_role :owner, @agent only works if Agent model includes resourcify; without resourcify on Agent, resource-scoped role creation fails silently or raises undefined method error for agent resource roles
  • Role name is a string, not symbol in DB — add_role :admin and add_role 'admin' are equivalent but Role.where(name: :admin) fails; use Role.where(name: 'admin').to_s or Rolify's has_role? method; direct Role queries in agent admin must use string role names
  • Rolify migration creates roles and users_roles tables — running rolify generator without running migration causes all Rolify calls to fail; in multi-tenant agent deployments, ensure migration runs on all tenant databases (if using apartment/acts_as_tenant schema separation)
  • Strict mode prevents typo roles — Rolify 6.x added strict mode validation; without rolify strict: true and explicit role name registration, typo role assignments silently create new role records; configure Rolify.configure with valid_roles list to prevent phantom agent role names
  • Clearing roles must use remove_all_roles — user.roles.delete_all bypasses Rolify callbacks and leaves orphaned role records; use user.remove_all_roles to correctly clean up resource-scoped roles; direct roles table manipulation corrupts Rolify's resource association tracking

Alternatives

Full Evaluation Report

Comprehensive deep-dive: security analysis, reliability audit, agent experience review, cost modeling, competitive positioning, and improvement roadmap for Rolify.

AI-powered analysis · PDF + markdown · Delivered within 30 minutes

$99

Package Brief

Quick verdict, integration guide, cost projections, gotchas with workarounds, and alternatives comparison.

Delivered within 10 minutes

$3

Score Monitoring

Get alerted when this package's AF, security, or reliability scores change significantly. Stay ahead of regressions.

Continuous monitoring

$3/mo

Scores are editorial opinions as of 2026-03-06.

5229
Packages Evaluated
26151
Need Evaluation
173
Need Re-evaluation
Community Powered