Bybit Futures
WarnAudited by ClawScan on May 10, 2026.
Overview
This is a coherent Bybit futures trading skill, but it can use write-enabled exchange credentials to place leveraged live orders and its safety/credential boundaries are under-declared.
Use paper trading or Bybit testnet first. Do not provide real API keys unless they are restricted to contract trading, have withdrawals disabled, and are preferably IP-allowlisted. Treat live mode as capable of real financial loss, and verify the risk controls before allowing autonomous execution.
Findings (6)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
If configured with real Bybit keys, the skill can act on the user’s trading account.
The code expects exchange API credentials, but the registry metadata declares no required env vars or primary credential. Those credentials enable account access for live trading.
BYBIT_API_KEY = os.getenv("BYBIT_API_KEY", "YOUR_API_KEY")
BYBIT_API_SECRET = os.getenv("BYBIT_API_SECRET", "YOUR_API_SECRET")Use a restricted Bybit API key with no withdrawal permission, consider IP allowlisting, start on testnet or paper mode, and require explicit user confirmation before any live order.
A mistaken invocation or flawed strategy could open or close leveraged futures positions with real funds.
The live trading module can place real market buy and sell orders. The artifacts do not show an explicit confirmation gate around these high-impact financial actions.
order = self.exchange.create_order(symbol, "market", "buy", amount, params=params) ... order = self.exchange.create_order(symbol, "market", "sell", amount, params=params)
Keep live trading disabled by default, add an explicit live-mode confirmation step, and require per-order approval or strict user-defined limits before execution.
Users may over-trust the bot’s stated safeguards and assume losses will automatically halt trading when the shown live code does not clearly support that guarantee.
The documentation presents strong risk-management guarantees, but the live trading close path shown only calls position_closed and does not clearly record trade PnL for daily loss-limit enforcement.
All trades enforced by `risk_manager.py`: - **Daily loss limit**: halt trading after X% daily drawdown
Verify the risk manager in paper/testnet mode, ensure realized PnL is recorded on every live close, and do not rely on the stated daily-loss halt until tested.
Different package versions could behave differently or introduce supply-chain risk.
The setup uses unpinned third-party Python packages. This is expected for a trading integration, but it leaves dependency versions and provenance to the user’s environment.
Install dependencies: `pip install ccxt websockets numpy requests`
Install in a virtual environment and pin known-good package versions before using live trading.
The bot may continue running in the background after setup until the service is disabled.
The deployment example creates a persistent background service that restarts automatically. It is disclosed and scoped to the paper trading bot, but it changes runtime persistence.
sudo systemctl enable --now paper-trading ... Restart=always
Only enable the service intentionally, monitor logs, and know how to stop and disable it before deployment.
Corrupted or edited local state could affect position limits or trading status.
The skill persists local risk/trade state to JSON and later reloads it. This is purpose-aligned, but local state can influence future trading behavior.
STATE_FILE = Path(__file__).parent / "risk_state.json"
...
STATE_FILE.write_text(json.dumps({Protect the trading directory, back up state files, and review state after crashes or manual edits.
