{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "$schema": { "type": "string" }, "quiet_mode": { "default": false, "type": "boolean", "description": "Suppress most toast notifications (rate limit, account switching). Recovery toasts always shown. Env: OPENCODE_ANTIGRAVITY_QUIET=1" }, "debug": { "default": false, "type": "boolean", "description": "Enable debug logging to file. Env: OPENCODE_ANTIGRAVITY_DEBUG=1 (or =2 for verbose)" }, "log_dir": { "type": "string", "description": "Custom directory for debug logs. Env: OPENCODE_ANTIGRAVITY_LOG_DIR=/path/to/logs" }, "keep_thinking": { "default": false, "type": "boolean", "description": "Preserve thinking blocks for Claude models using signature caching. May cause signature errors. Env: OPENCODE_ANTIGRAVITY_KEEP_THINKING=1" }, "session_recovery": { "default": true, "type": "boolean", "description": "Enable automatic session recovery from tool_result_missing errors. Env: OPENCODE_ANTIGRAVITY_SESSION_RECOVERY=1" }, "auto_resume": { "default": false, "type": "boolean", "description": "Automatically send resume prompt after successful recovery. Env: OPENCODE_ANTIGRAVITY_AUTO_RESUME=1" }, "resume_text": { "default": "continue", "type": "string", "description": "Custom text to send when auto-resuming after recovery. Env: OPENCODE_ANTIGRAVITY_RESUME_TEXT=continue" }, "signature_cache": { "type": "object", "properties": { "enabled": { "default": true, "type": "boolean", "description": "Enable disk caching of thinking block signatures." }, "memory_ttl_seconds": { "default": 3600, "type": "number", "minimum": 60, "maximum": 86400, "description": "In-memory TTL in seconds." }, "disk_ttl_seconds": { "default": 172800, "type": "number", "minimum": 3600, "maximum": 604800, "description": "Disk TTL in seconds." }, "write_interval_seconds": { "default": 60, "type": "number", "minimum": 10, "maximum": 600, "description": "Background write interval in seconds." } }, "required": [ "enabled", "memory_ttl_seconds", "disk_ttl_seconds", "write_interval_seconds" ], "additionalProperties": false, "description": "Signature cache configuration for persisting thinking block signatures. Only used when keep_thinking is enabled." }, "empty_response_max_attempts": { "default": 4, "type": "number", "minimum": 1, "maximum": 10, "description": "Maximum retry attempts when Antigravity returns an empty response (no candidates)." }, "empty_response_retry_delay_ms": { "default": 2000, "type": "number", "minimum": 500, "maximum": 10000, "description": "Delay in milliseconds between empty response retries." }, "tool_id_recovery": { "default": true, "type": "boolean", "description": "Enable tool ID orphan recovery. Matches mismatched tool responses by function name or creates placeholders." }, "claude_tool_hardening": { "default": true, "type": "boolean", "description": "Enable tool hallucination prevention for Claude models. Injects parameter signatures and strict usage rules." }, "proactive_token_refresh": { "default": true, "type": "boolean", "description": "Enable proactive background token refresh before expiry, ensuring requests never block." }, "proactive_refresh_buffer_seconds": { "default": 1800, "type": "number", "minimum": 60, "maximum": 7200, "description": "Seconds before token expiry to trigger proactive refresh." }, "proactive_refresh_check_interval_seconds": { "default": 300, "type": "number", "minimum": 30, "maximum": 1800, "description": "Interval between proactive refresh checks in seconds." }, "max_rate_limit_wait_seconds": { "default": 300, "type": "number", "minimum": 0, "maximum": 3600 }, "quota_fallback": { "default": false, "type": "boolean" }, "cli_first": { "default": false, "type": "boolean", "description": "Prefer gemini-cli routing before Antigravity for Gemini models. When false (default), Antigravity is tried first and gemini-cli is fallback." }, "account_selection_strategy": { "default": "hybrid", "type": "string", "enum": [ "sticky", "round-robin", "hybrid" ] }, "pid_offset_enabled": { "default": false, "type": "boolean" }, "switch_on_first_rate_limit": { "default": true, "type": "boolean" }, "default_retry_after_seconds": { "default": 60, "type": "number", "minimum": 1, "maximum": 300 }, "max_backoff_seconds": { "default": 60, "type": "number", "minimum": 5, "maximum": 300 }, "health_score": { "type": "object", "properties": { "initial": { "default": 70, "type": "number", "minimum": 0, "maximum": 100 }, "success_reward": { "default": 1, "type": "number", "minimum": 0, "maximum": 10 }, "rate_limit_penalty": { "default": -10, "type": "number", "minimum": -50, "maximum": 0 }, "failure_penalty": { "default": -20, "type": "number", "minimum": -100, "maximum": 0 }, "recovery_rate_per_hour": { "default": 2, "type": "number", "minimum": 0, "maximum": 20 }, "min_usable": { "default": 50, "type": "number", "minimum": 0, "maximum": 100 }, "max_score": { "default": 100, "type": "number", "minimum": 50, "maximum": 100 } }, "required": [ "initial", "success_reward", "rate_limit_penalty", "failure_penalty", "recovery_rate_per_hour", "min_usable", "max_score" ], "additionalProperties": false }, "token_bucket": { "type": "object", "properties": { "max_tokens": { "default": 50, "type": "number", "minimum": 1, "maximum": 1000 }, "regeneration_rate_per_minute": { "default": 6, "type": "number", "minimum": 0.1, "maximum": 60 }, "initial_tokens": { "default": 50, "type": "number", "minimum": 1, "maximum": 1000 } }, "required": [ "max_tokens", "regeneration_rate_per_minute", "initial_tokens" ], "additionalProperties": false }, "auto_update": { "default": true, "type": "boolean", "description": "Enable automatic plugin updates. Env: OPENCODE_ANTIGRAVITY_AUTO_UPDATE=1" } }, "additionalProperties": false }