T09 · Insecure Skill Coding Practices
- Location
references/api/form.md:363- Finding
Password Form Examples Log Submitted Credentials
- Content
View full analysis
console.log(values)} /> } > ); } ``` ```tsx import { ActionPanel, Form, Action } from "@raycast/api"; import { useState } from "react"; export default function Command() { const [password, setPassword] = useState(""); return ( console.log(values)} /> } > ); } ``` ### Technical Analysis Both examples pass the complete form values object to `console.log`. Because the form contains a `Form.PasswordField`, the logged object includes the submitted password in plaintext. A password field only conceals characters in the user interface; it does not automatically redact the value after submission. These examples therefore contradict the surrounding documentation stating that entered password characters must remain secret. Since the Skill directs agents to treat these API references as a primary source of truth, generated extensions may reproduce this unsafe pattern. ### Attack Path 1. A developer or coding agent copies one of the documented password-form examples. 2. A user enters a password and submits the form. 3. Raycast invokes `onSubmit` with an object containing the plaintext password. 4. `console.log(values)` serializes the complete object. 5. T ...[truncated 823 chars]- Remediation
View remediation
