OpenBB-finance/OpenBB · error · RuntimeError

OBBject Extension Error -> An OBBject extension that modif

Error message

OBBject Extension Error -> 

An OBBject extension that modifies the output is installed but has not been enabled in `system_settings.json`.

Set `allow_mutable_extensions` to True to enable it.
Or, set the environment variable `OPENBB_ALLOW_MUTABLE_EXTENSIONS` to True.

Proceed with caution as this may have security implications.

Ensure the extension is installed from a trusted source.

What it means

Raised by the economic-indicators model validator (`parse_and_validate_symbols`, mode='after') when `symbol` is empty. The `dataflow::identifier` symbol is the core selector for this endpoint — there is no default series — so an empty symbol aborts validation immediately.

Source

Thrown at openbb_platform/core/openbb_core/app/model/extension.py:87

            and not SystemService().system_settings.allow_on_command_output
        ):
            raise RuntimeError(
                "OBBject Extension Error -> \n\n"
                + "An OBBject extension that acts on command output is installed "
                + "but has not been enabled in `system_settings.json`.\n\n"
                + "Set `allow_on_command_output` to True to enable it.\n"
                + "Or, set the environment variable `OPENBB_ALLOW_ON_COMMAND_OUTPUT` to True."
                + "\n\nProceed with caution as this may have security implications.\n\n"
                + "Ensure the extension is installed from a trusted source.\n\n",
            )

        # The user must explicitly enable OBBject extensions that modify output.
        if (
            self.on_command_output
            and self.immutable is False
            and not SystemService().system_settings.allow_mutable_extensions
        ):
            raise RuntimeError(
                "OBBject Extension Error -> \n\n"
                + "An OBBject extension that modifies the output is installed "
                + "but has not been enabled in `system_settings.json`.\n\n"
                + "Set `allow_mutable_extensions` to True to enable it.\n"
                + "Or, set the environment variable `OPENBB_ALLOW_MUTABLE_EXTENSIONS` to True."
                + "\n\nProceed with caution as this may have security implications.\n\n"
                + "Ensure the extension is installed from a trusted source.\n\n",
            )

    @property
    def obbject_accessor(self) -> Callable:
        """Extend an OBBject, inspired by pandas."""
        # pylint: disable=import-outside-toplevel

        from openbb_core.app.model.obbject import OBBject

        return self.register_accessor(self.name, OBBject)

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Pass a valid symbol in `dataflow::identifier` form, e.g. `symbol='IFS::NGDP_XDC'`.
  2. Discover valid symbols first: call `available_indicators()` (search) or `list_tables()` and feed a result back in.
  3. In dynamic builders, assert the symbol is non-empty and contains '::' before calling.

Example fix

# before
res = obb.economy.economic_indicators(provider='imf', country='USA')

# after
res = obb.economy.economic_indicators(provider='imf', symbol='IFS::NGDP_XDC', country='USA')
Defensive patterns

Strategy: validation

Validate before calling

def require_symbol(symbol):
    if not symbol or not symbol.strip():
        raise ValueError('IMF economic_indicators requires a non-empty symbol like IFS::NGDP_XDC.')
    return symbol

symbol = require_symbol(symbol)

Type guard

def is_non_empty_symbol(symbol) -> bool:
    return isinstance(symbol, str) and bool(symbol.strip())

Prevention

When it happens

Trigger: Calling the economic-indicators endpoint with `symbol=''` or omitted, or passing `symbol=None` when the field is optional-with-default-empty in the params model. Also fires when a caller builds the symbol string dynamically and it concatenates to empty.

Common situations: Assuming the endpoint returns 'main indicators' without a symbol; templated code like `symbol=f'{dataflow}::{indicator}'` where indicator is empty at runtime; frontends sending an empty string when the user selects nothing.

Related errors


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/058362251535fdaa. Report an issue: GitHub.