{"id":6671,"library":"ida-settings","title":"IDA Settings","description":"ida-settings is a Python library (current version 3.3.0) designed for IDA Pro plugins to fetch configuration values from a shared, centralized settings infrastructure. It provides a standardized way for plugins to retrieve and manage user-defined settings within the IDA Pro environment. The library is specifically intended for use within IDA Pro and its plugin ecosystem and does not operate as a standalone utility.","status":"active","version":"3.3.0","language":"en","source_language":"en","source_url":"https://github.com/williballenthin/ida-settings","tags":["IDA Pro","IDA plugin","configuration","settings","reverse engineering"],"install":[{"cmd":"pip install ida-settings","lang":"bash","label":"Install ida-settings"}],"dependencies":[],"imports":[{"symbol":"ida_settings","correct":"import ida_settings"}],"quickstart":{"code":"import ida_settings\n\n# This code must run within an IDA Pro plugin environment.\n# For demonstration purposes, we assume 'openai_key' is a setting\n# defined in the current plugin's ida-plugin.json.\n\ntry:\n    # Fetch a setting value\n    api_key = ida_settings.get_current_plugin_setting(\"openai_key\")\n    print(f\"Retrieved API Key: {api_key}\")\n\n    # Example of programmatic setting (use with caution, hcli/GUI preferred)\n    # ida_settings.set_current_plugin_setting(\"some_feature_enabled\", True)\n\n    # Check if a setting exists\n    if ida_settings.has_current_plugin_setting(\"another_setting\"):\n        print(\"Another setting exists.\")\n\nexcept KeyError as e:\n    print(f\"Error: Setting not found - {e}. Ensure it's defined in ida-plugin.json.\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to import `ida_settings` and retrieve a configuration value for the current plugin using `get_current_plugin_setting`. It also shows how to check for the existence of a setting. This code snippet is designed to be executed within an IDA Pro plugin environment."},"warnings":[{"fix":"Ensure that any code utilizing `ida-settings` is executed as part of an IDA Pro plugin.","message":"The `ida-settings` library is designed exclusively for use within the IDA Pro plugin environment. It relies on internal IDA Pro mechanisms to identify the current plugin and access settings, meaning it will not function correctly if run as a standalone Python script outside of IDA Pro.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Always use the provided `ida_settings` functions to fetch, set, or delete configuration values.","message":"Plugins should interact with settings strictly through the `ida-settings` API (e.g., `get_current_plugin_setting`, `set`, `del`). Direct manipulation of the `ida-config.json` file is discouraged and may lead to breakage in future versions, as cascading settings mechanisms similar to VS Code may be introduced.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Consult the IDA Pro 9.0 release notes and developer guides (especially for IDAPython) when upgrading your IDA Pro installation to ensure compatibility for your entire plugin suite.","message":"While `ida-settings` is a Python library, its users should be aware that IDA Pro version 9.0 introduced significant breaking changes for plugin compatibility. C++ plugins required rebuilding, and IDAPython usage might require referencing porting guides due to SDK changes. Although not directly breaking `ida-settings`'s API, the broader plugin environment might need updates.","severity":"breaking","affected_versions":"IDA Pro 9.0 and later (indirectly affects plugins using ida-settings)"}],"env_vars":null,"last_verified":"2026-04-15T00:00:00.000Z","next_check":"2026-07-14T00:00:00.000Z","problems":[]}