NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1190 most downloaded on Packagist
A Filament package to impersonate your users.
Last release 6 days ago
01 Oct 2026
Release timing varies
gaps range from 2 weeks to 5 months
Rarely documented
notes for 8 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
64 releases · first in 2021
Fix sidebar offset on panels without a topbar in #158
Full Changelog: v5.6.0...v5.6.1
Add Russian, Tajik and Uzbek translations by @komyor09 in #156
One column per quarter.
Scope Login/Logout impersonation clear to the impersonator's guard by @chengkangzai in #154
Full Changelog: v5.4.0...v5.5.0
Change cookie expiration date when Impersonating by @LuizCristino in #153
Full Changelog: v5.3.0...v5.4.0
Allow user to specify spa mode on redirect regardless of Filament configuration by @machacekmartin in #148
Full Changelog: v5.2.0...v5.3.0
Add Romanian translation by @ideacatlab in #150
Full Changelog: v5.1.0...v5.2.0
Add language support for zh_CN, zh_TW, ta, and ms by @chengkangzai in #149
Full Changelog: v5.0.0...v5.1.0
This is a major release that removes the lab404/laravel-impersonate dependency entirely, replacing it with a lean, native implementation purpose-built
This is a major release that removes the lab404/laravel-impersonate dependency entirely, replacing it with a lean, native implementation purpose-built for Filament — with full Octane compatibility.
All impersonation logic is now handled internally by ImpersonateManager — a stateless, Octane-safe service registered as a scoped binding. No more pulling in a general-purpose impersonation package.
Impersonation works correctly under Laravel Octane (Swoole and FrankenPHP). The package uses direct session manipulation with Laravel's stock SessionGuard, avoiding any custom guard registration that could break under Octane's request sandboxing.
A new Impersonation facade provides a clean static API:
use STS\FilamentImpersonate\Facades\Impersonation;
Impersonation::isImpersonating();
Impersonation::getImpersonator();
Impersonation::getImpersonatorId();
Impersonation::enter($from, $to, $guardName);
Impersonation::leave();New package-owned events replace the lab404 events:
STS\FilamentImpersonate\Events\EnterImpersonationSTS\FilamentImpersonate\Events\LeaveImpersonationBoth carry $impersonator and $impersonated public properties.
When impersonation fails (e.g. incompatible guard), a Filament danger notification is now shown instead of silently doing nothing. Diagnostic Log::warning() messages are also emitted for debugging.
lab404/laravel-impersonate dependencyThe package no longer requires or uses lab404/laravel-impersonate. It will be removed from your composer.lock automatically on update.
Impersonate trait (STS\FilamentImpersonate\Models\Impersonate)The trait that was added to User models has been removed. If your User model uses this trait, remove it:
- use STS\FilamentImpersonate\Models\Impersonate;
-
class User extends Authenticatable
{
- use Impersonate;
}If you had canImpersonate() or canBeImpersonated() methods on your model via the trait, just keep them as regular methods — the action checks for them with method_exists().
guard config keyThe filament-impersonate.guard config option has been removed. The guard is now determined by the Filament panel's auth guard. For per-action override, use ->guard('custom') on the action.
If you published the config file, you can remove the guard key.
If you listen for impersonation events, update your imports:
- use Lab404\Impersonate\Events\TakeImpersonation;
- use Lab404\Impersonate\Events\LeaveImpersonation;
+ use STS\FilamentImpersonate\Events\EnterImpersonation;
+ use STS\FilamentImpersonate\Events\LeaveImpersonation;ImpersonateManager namespaceIf you referenced the manager directly (most users won't have), the namespace changed:
- use Lab404\Impersonate\Services\ImpersonateManager;
+ use STS\FilamentImpersonate\ImpersonateManager;Prefer using the Impersonation facade instead.
impersonateRecord() signatureThe unused second parameter $visible has been removed:
- ->impersonateRecord($record, $visible)
+ ->impersonateRecord($record)Octane compatibility : Replaced custom SessionGuard with direct session manipulation. The custom guard registered via Auth::extend() was not surviving
Octane compatibility: Replaced custom SessionGuard with direct session manipulation. The custom guard registered via Auth::extend() was not surviving Octane's request sandboxing, causing impersonation to fail silently under Swoole/FrankenPHP. The package now manipulates auth session keys directly using Laravel's stock SessionGuard, removing the fragile class coupling.
Failure notification: When impersonation fails, a Filament danger notification is now shown instead of silently doing nothing.
Diagnostic logging: Log::warning() is now emitted when enter() or leave() fails, with guard and user context for debugging.
LeaveImpersonation event: The $impersonated parameter is now nullable to handle edge cases where the impersonated user was soft-deleted or removed during the session.
Fixed table row action not triggering impersonation — The action callback in setUp() was missing the $record parameter, causing the impersonate button
setUp() was missing the $record parameter, causing the impersonate button on table rows to silently fail. The visible() callback was correct, so the button appeared but clicking it did nothing. (#146)See v5.0.0-beta.1 for the complete list of changes in the v5 release.
This is a major release that removes the lab404/laravel-impersonate dependency entirely, replacing it with a lean, native implementation purpose-built
This is a major release that removes the lab404/laravel-impersonate dependency entirely, replacing it with a lean, native implementation purpose-built for Filament.
All impersonation logic is now handled internally by ImpersonateManager — a stateless, Octane-safe service registered as a scoped binding. No more pulling in a general-purpose impersonation package.
A new Impersonation facade provides a clean static API:
use STS\FilamentImpersonate\Facades\Impersonation;
Impersonation::isImpersonating();
Impersonation::getImpersonator();
Impersonation::getImpersonatorId();
Impersonation::enter($from, $to, $guardName);
Impersonation::leave();A custom SessionGuard with quietLogin() / quietLogout() methods handles user switching without firing Laravel's auth events, preserving session state during impersonation.
New package-owned events replace the lab404 events:
STS\FilamentImpersonate\Events\EnterImpersonationSTS\FilamentImpersonate\Events\LeaveImpersonationBoth carry $impersonator and $impersonated public properties.
lab404/laravel-impersonate dependencyThe package no longer requires or uses lab404/laravel-impersonate. It will be removed from your composer.lock automatically on update.
Impersonate trait (STS\FilamentImpersonate\Models\Impersonate)The trait that was added to User models has been removed. The action uses method_exists() checks, so the trait was never required. If your User model uses this trait, remove it:
- use STS\FilamentImpersonate\Models\Impersonate;
-
class User extends Authenticatable
{
- use Impersonate;
}If you had canImpersonate() or canBeImpersonated() methods on your model via the trait, just keep them as regular methods — the action checks for them with method_exists().
guard config keyThe filament-impersonate.guard config option has been removed. The guard is now determined by the Filament panel's auth guard (which is the correct default). For per-action override, use ->guard('custom') on the action.
If you published the config file, you can remove the guard key.
If you listen for impersonation events, update your imports:
- use Lab404\Impersonate\Events\TakeImpersonation;
- use Lab404\Impersonate\Events\LeaveImpersonation;
+ use STS\FilamentImpersonate\Events\EnterImpersonation;
+ use STS\FilamentImpersonate\Events\LeaveImpersonation;ImpersonateManager namespaceIf you referenced the manager directly (most users won't have), the namespace changed:
- use Lab404\Impersonate\Services\ImpersonateManager;
+ use STS\FilamentImpersonate\ImpersonateManager;Prefer using the Impersonation facade instead.
impersonateRecord() signatureThe unused second parameter $visible has been removed:
- ->impersonateRecord($record, $visible)
+ ->impersonateRecord($record)app('impersonate') / app(ImpersonateManager::class)These still work, but the recommended API is now the Impersonation facade.
enter() failure is now caught and handled before redirectingclear() now also removes stale remember-me cookie staging datacanImpersonate() boolean chain decomposed into readable guard clausesNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →