Practice summary: The 49ers had a high-tempo practice that finished 15 minutes earlier than planned in their first full-squad practice of training camp.
Coach Jim Harbaugh often cautions not to pay too much attention to how players are stacked on the depth chart early in camp, but there were two notables first-stringers on defense.
Ian Williams lined up at nose tackle with the starters, while Craig Dahl patrolled free safety. Rookie safety Eric Reid rotated in with the second unit. And presumptive starter at nose tackle Glenn Dorsey took second-team repetitions.
Tarell Brown and Carlos Rogers were the starting cornerbacks, as expected. Nnamdi Asomugha worked at right corner with the second team, while Chris Culliver manned the left side.
Wide receiver Kyle Williams was cleared to practice after sustaining a torn ACL last November. Williams, LaMichael James and rookie B.J. Daniels fielded punts during a special-teams period.
[RELATED: Williams enters competition among wideouts]
Defensive lineman Justin Smith, who declared himself 100 percent after undergoing offseason surgery to repair a torn left triceps tendon, showed his brute force early in practice when he leveled running back Jewel Hampton -- perhaps inadvertently.
Linebacker Patrick Willis recorded an interception during 7-on-7 drills on a Colin Kaepernick pass that deflected off Frank Gore's hands. Second-year safety Michael Thomas intercepted a Colt McCoy pass in an 11-on-11 session.
Offensive play of the day: Wide receiver Anquan Boldin had a strong day as he looks early on as if he'll be Kaepernick's security blanket among the wide receivers. Kaepernick's best pass of the day was a laser about 25 yards down the field that Boldin caught between the coverage of cornerback Tramaine Brock and Thomas.
Defensive play of the day: Outside linebacker Aldon Smith, who was cleared to practice after undergoing offseason shoulder surgery, showed a new wrinkle to his game. He proved in his first two seasons that he can rush the passer. Last season, he did a good job against the run, too. In the 49ers' first practice of the summer, Smith dropped deep into coverage and batted away a Kaepernick pass nearly 30 yards down the field that was intended for Boldin.
Rookie report: WR Quinton Patton participated in practice wearing a no-contact blue jersey. Patton's condition was not disclosed . . . Undrafted WR Chuck Jacobs had a good day with a handful of catches during team period. . . TE Vance McDonald caught a couple passes and also worked on his long-snapping -- with mixed results . . . Eric Reid worked with the second unit and did not allow any plays behind him. He had good coverage on one underneath route against second-year TE Garrett Celek. The two players got their feet tangled, sending Celek to the ground.
Roster moves: Williams and LB Darius Fleming were activated off the active physically unable to perform list. Both players were cleared after knee injuries.
The 49ers placed WR Michael Crabtree on the active physically unable to perform list. The club is hoping Crabtree will make a late-season return after sustaining a torn right Achilles in a workout on May 21.
[RELATED: Crabtree remains on target for late-season return]
The 49ers placed DT Lamar Divens on the active non-football injury list. Divens sustained injuries from an June 8 incident in which LB Ahmad Brooks allegedly struck him three times with a beer bottle. The NFL said there will be a review of Brooks under the league's personal conduct policy. Coach Jim Harbaugh and general manager Trent Baalke have declined to comment on whether the 49ers will discipline Brooks.
On the sideline: Crabtree (Achilles), RB Kendall Hunter (Achilles), WR Mario Manningham (knee) are on the active PUP list. Divens, RB Marcus Lattimore (knee), DE Tank Carradine (knee), DT Quinton Dial (toe) and OT Luke Marquardt (foot) are on the active non-football injury list.
Hunter was seen working on agility drills and explosive jumps with his left leg. It looks as if he's close to returning to the practice field.
Fired agent: CB Tarell Brown told reporters who cover the 49ers that he found out via Twitter on Thursday that he forfeited $2 million in salary for this season for not attending the 49ers’ offseason workout program. After he learned his base salary was dropped to $925,000 in the final year of his contract, Brown told reporters that he immediately called his agent, Brian Overstreet, and fired him. With a good season, Brown figures to earn a nice contract for next season — and a nice commission for his new agent.
Quote of the day: ""Who do I respect more than Donte Whitner? No-body. He's right up there at the very top."
--49ers coach Jim Harbaugh