sipeed/picoclaw · error

✗ Skill '%s' is flagged as malicious and cannot be installed

Error message

✗ Skill '%s' is flagged as malicious and cannot be installed.

What it means

The registry's malware scan flagged the skill: result.IsMalwareBlocked was true after download, so installation is refused, the partial directory is removed, and the skill cannot be installed through this path. This is a deliberate security stop, not a bug.

Source

Thrown at cmd/picoclaw/internal/skills/helpers.go:100

		return fmt.Errorf("\u2717 failed to create skills directory: %w", err)
	}

	result, err := registry.DownloadAndInstall(ctx, target, "", targetDir)
	if err != nil {
		rmErr := os.RemoveAll(targetDir)
		if rmErr != nil {
			fmt.Printf("\u2717 Failed to remove partial install: %v\n", rmErr)
		}
		return fmt.Errorf("✗ failed to install skill: %w", err)
	}

	if result.IsMalwareBlocked {
		rmErr := os.RemoveAll(targetDir)
		if rmErr != nil {
			fmt.Printf("\u2717 Failed to remove partial install: %v\n", rmErr)
		}

		return fmt.Errorf("\u2717 Skill '%s' is flagged as malicious and cannot be installed.\n", target)
	}

	if result.IsSuspicious {
		fmt.Printf("\u26a0\ufe0f  Warning: skill '%s' is flagged as suspicious.\n", target)
	}

	if !workspaceHasValidSkillDirectory(workspace, dirName) {
		_ = os.RemoveAll(targetDir)
		return fmt.Errorf("✗ failed to install skill: registry archive for %q is not a valid skill", target)
	}

	normalizedSlug, registryURL := skills.BuildInstallMetadataForRegistryInstance(registry, target, result.Version)
	installedAt := time.Now().UnixMilli()
	if err := writeInstalledSkillOriginMeta(targetDir, installedSkillOriginMeta{
		Version:          1,
		OriginKind:       "third_party",
		Registry:         registry.Name(),
		Slug:             normalizedSlug,

View on GitHub (pinned to 49183d7e8d)

Solutions

  1. Do not bypass the block — inspect the skill's source on the registry first.
  2. If it looks like a false positive, report it to the registry maintainers and wait for a clean scan.
  3. Choose an alternative skill with similar functionality.
  4. Audit the skill's scripts (SKILL.md and any shell/code files) before considering any manual install.
Defensive patterns

Strategy: try-catch

Try / catch

if err != nil && strings.Contains(err.Error(), "flagged as malicious") {
    // hard stop: surface for human review — never retry or bypass
    return fmt.Errorf("install blocked by malware scan: %w", err)
}

Prevention

When it happens

Trigger: The downloaded skill's files match the registry scanner's malware signatures/heuristics, setting result.IsMalwareBlocked at helpers.go:100.

Common situations: A genuinely malicious skill published to the registry, or a false positive on scripts that shell out, download files, or use obfuscated payloads.

Related errors


AI-assisted analysis of sipeed/picoclaw@49183d7e8d (2026-08-15). Data as JSON: /api/errors/7bc1e148180c4573. Report an issue: GitHub.