Significant-Gravitas/AutoGPT · error · NotFoundError

Graph #{graph_id} is not accessible (anymore)

Error message

Graph #{graph_id} is not accessible (anymore)

What it means

NotFoundError raised inside setup_triggered_preset (library/triggers.py) when get_graph(graph_id, version, user_id) returns None — the graph does not exist, is not accessible to this user, or the pinned version is gone. This is a domain exception (not an HTTPException); the API layer maps it, typically to a 404 on POST /presets/setup-trigger or PATCH /presets/{id}.

Source

Thrown at autogpt_platform/backend/backend/api/features/library/triggers.py:58

    """Create a webhook-triggered ``LibraryAgentPreset`` for the given graph.

    Sets up the webhook for the graph's trigger node — auto-registering it with
    the provider for auto-setup webhooks, or just minting the ingress URL for
    manual-setup webhooks — then creates a preset linked to that webhook. The
    returned preset has ``.webhook`` populated, so ``preset.webhook.url`` is the
    ingress URL to hand to the user for manual-setup webhooks.

    Fetches the graph itself (rather than taking a ``GraphModel``) so it can run
    as an RPC endpoint without serializing the whole graph across the boundary.

    Raises:
        NotFoundError: if the graph no longer exists / isn't accessible.
        InvalidInputError: if the graph has no webhook node, or the webhook
            backend rejects the trigger config / credentials.
    """
    graph = await get_graph(graph_id, version=graph_version, user_id=user_id)
    if not graph:
        raise NotFoundError(f"Graph #{graph_id} is not accessible (anymore)")
    if not (trigger_node := graph.webhook_input_node):
        raise InvalidInputError(
            f"Graph #{graph_id} does not have a webhook trigger node"
        )

    trigger_config_with_credentials = {
        **trigger_config,
        **(
            make_node_credentials_input_map(graph, agent_credentials).get(
                trigger_node.id
            )
            or {}
        ),
    }

    # Resource-follows-parent: the webhook lives in the graph's org/team,
    # not the caller's active org.
    new_webhook, feedback = await setup_webhook_for_block(

View on GitHub (pinned to 9c8bb5550f)

Solutions

  1. Confirm the graph is visible to the acting user: GET /graphs/{graph_id} with version.
  2. Use the graph's current version rather than a cached version number.
  3. If the graph was deleted, recreate it (or restore) before setting up the trigger.
  4. Catch NotFoundError in RPC callers and translate it to a user-facing 'agent no longer available' message.

Example fix

# before
await setup_triggered_preset(user_id=uid, graph_id=gid, graph_version=v, ...)
# after
graph = await get_graph(gid, version=v, user_id=uid)
if not graph:
    raise ValueError(f"Graph {gid} v{v} not accessible; refresh and retry")
await setup_triggered_preset(user_id=uid, graph_id=gid, graph_version=graph.version, ...)
Defensive patterns

Strategy: validation

Validate before calling

graph = await get_graph(gid, version=graph_version, user_id=uid)
if not graph:
    raise ValueError('Graph not accessible — refresh graph reference')

Try / catch

try:
    await setup_triggered_preset(...)
except NotFoundError as e:
    raise AgentNoLongerAvailable(str(e)) from e

Prevention

When it happens

Trigger: setup-trigger RPC with a deleted graph_id; version pin referencing a pruned graph version; graph owned by a different user/org; graph soft-deleted between the user opening the trigger setup dialog and submitting it.

Common situations: Graph deleted in another tab while the trigger setup modal was open; stale graph_id persisted in frontend state; version mismatch after graph re-publish; cross-org access attempt.

Related errors


AI-assisted analysis of Significant-Gravitas/AutoGPT@9c8bb5550f (2026-08-14). Data as JSON: /api/errors/4ee680dc86b34dfe. Report an issue: GitHub.