Skip to content

Scopes

Dj Signals Panel splits its permission checks into scopes: named checkpoints passed to @panel_config.permission_required(scope) (for views) and scope= (for panel tools). Every scope inherits the panel-wide ALLOWED_GROUPS/REQUIRE_SUPERUSER rule by default; a scope only behaves differently once you add an entry for it under SCOPE_PERMISSIONS in DJ_SIGNALS_PANEL_SETTINGS.

Both views and tools are enforced through the exact same mechanism: the same SCOPE_PERMISSIONS dict, the same ALLOWED_GROUPS/REQUIRE_SUPERUSER keys, the same resolution order. There is no separate permission system for AI agents. See the Permissions and Scopes guide for the full model.

Design: separate scopes per actor type

Dj Signals Panel gives humans (admin UI views) and AI agents (MCP tools) distinct scopes, even where a tool surfaces the same underlying data as a view. This means you can grant staff full browsing access in the admin while denying (or separately restricting) automated/agent access to the same data, or vice versa, without one setting accidentally controlling both.

Reference

Scope Type Protects Default behavior
signal_list View index view: browse/search the full signal list Any staff user
signal_detail View signal_detail view: a single signal's detail page and its receivers Any staff user
agent_signal_list Tool list_signals MCP tool Any staff user the MCP endpoint authenticates as
agent_receiver_list Tool get_receivers MCP tool Any staff user the MCP endpoint authenticates as
agent_signal_lookup Tool find_signal_by_sender MCP tool Any staff user the MCP endpoint authenticates as
agent_receiver_inspect Tool inspect_receiver MCP tool (optionally includes source code via SHOW_SOURCE) Any staff user the MCP endpoint authenticates as

Example: independent human vs. agent access

DJ_SIGNALS_PANEL_SETTINGS = {
    # Panel-wide default: any staff member can browse the admin UI
    'ALLOWED_GROUPS': [],

    'SCOPE_PERMISSIONS': {
        # AI agents may list signals and receivers, but resolving a
        # receiver's source code (SHOW_SOURCE) is restricted to a
        # dedicated group, even though staff can view it freely in
        # the admin's "View Source" panel.
        'agent_receiver_inspect': {'ALLOWED_GROUPS': ['ai-agents-readonly']},
    },
}

Any scope not mentioned in SCOPE_PERMISSIONS simply falls back to the panel-wide rule, so you only ever need to write down the exceptions.

See Configuration for the rest of the panel's settings, including what each MCP tool does.