Openclaw Ledger
Analysis
This is a local audit logger, but its tamper-detection promise appears stronger than the visible local hash-chain implementation supports.
Findings (4)
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.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
expected = GENESIS_HASH
...
if e.get("prev_hash") != expected:
return False, i, len(entries)
expected = hash_entry(ej)Verification starts from a public genesis value and checks only that local entries are internally consistent. The artifacts show no external trusted head hash, signature, remote append-only store, or other anchor, so a party able to edit the ledger could potentially rewrite a consistent chain.
for root, dirs, fnames in os.walk(ws):
...
fh = file_hash(fp)
...
snap[str(fp.relative_to(ws))] = {"sha256": fh, "size": fp.stat().st_size}The helper recursively opens files under the selected workspace to compute hashes and record file metadata. This is purpose-aligned for change tracking, but broad if the workspace path is too large.
Source: unknown Homepage: none
The registry metadata does not provide a verified source or homepage, while README.md separately suggests cloning a GitHub repository. This is a provenance gap rather than evidence of malicious behavior.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
LEDGER_DIR = ".ledger"
...
json.dump({"last_snapshot": snap, "init_time": now_iso()}, f, indent=2)The skill creates persistent local audit state containing the last workspace snapshot and chain data. This is expected for an audit ledger, but it persists workspace file inventory metadata across sessions.
