langchain-ai/deepagents · error · RuntimeError

missing update option: {option_key}

Error message

missing update option: {option_key}

What it means

Raised when a config option key is not a known update-check option. The code resolves the key via get_option; unknown keys cannot be turned into a ConfigSources lookup. This protects against silently applying settings to nonexistent options.

Source

Thrown at libs/code/deepagents_code/update_check.py:4276

    Returns:
        Sources, manifest declaration, and ranked resolution.

    Raises:
        RuntimeError: If `option_key` is missing from the manifest.
    """
    from deepagents_code.config_manifest import get_option
    from deepagents_code.configuration.providers import TomlFileProvider
    from deepagents_code.configuration.resolver import resolver_from_snapshots
    from deepagents_code.configuration.service import (
        ConfigSources,
        get_managed_snapshot,
    )

    option = get_option(option_key)
    if option is None:
        msg = f"missing update option: {option_key}"
        raise RuntimeError(msg)
    resolver_option = (
        replace(option, empty_env_is_false=True)
        if option_key == "update.auto_update"
        else option
    )
    sources = ConfigSources(
        managed=get_managed_snapshot(),
        user=TomlFileProvider("config.toml", DEFAULT_CONFIG_PATH).load(),
    )
    # Resolve against this exact snapshot generation: the caller reports the
    # sources' health next to the value, so both must come from the same read
    # rather than the shared process cache.
    resolved = resolver_from_snapshots(managed=sources.managed, user=sources.user).get(
        resolver_option
    )
    return sources, option, resolved

View on GitHub (pinned to a1af029e6e)

Solutions

  1. Use a valid option key such as 'update.auto_update' (check the options registry via get_option or docs).
  2. Fix typos: keys use dot-notation with underscores, e.g. update.auto_update.
  3. Check the library version for renamed/removed options and update callers.

Example fix

// before
resolve_option('update.autoupdate')
// after
resolve_option('update.auto_update')
Defensive patterns

Strategy: validation

Validate before calling

if get_option(key) is None:
    raise ValueError(f'unknown update option: {key}')

Type guard

def is_known_option(key: str) -> bool:
    return get_option(key) is not None

Try / catch

try:
    resolve_update_option(key)
except RuntimeError as e:
    logger.error('bad option key: %s', e)

Prevention

When it happens

Trigger: Calling the update-check option-resolution API (update_check.py, get_managed_snapshot path) with an option_key not registered in the options table, e.g. a misspelled key like 'update.autoupdate' instead of 'update.auto_update'.

Common situations: Typo in config key after a rename across versions; hand-written policy/config files with stale option names; scripts generated against an older library version.

Related errors


AI-assisted analysis of langchain-ai/deepagents@a1af029e6e (2026-08-29). Data as JSON: /api/errors/5fbe43e6bcfed08e. Report an issue: GitHub.